Index: src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java (revision 488611) +++ src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java (working copy) @@ -1403,7 +1403,7 @@ try { return srcStateMgr.getItemState(id); } catch (NoSuchItemStateException nsise) { - throw new ItemNotFoundException(safeGetJCRPath(id)); + throw new ItemNotFoundException(safeGetJCRPath(id), nsise); } catch (ItemStateException ise) { String msg = "internal error: failed to retrieve state of " + safeGetJCRPath(id); Index: src/main/java/org/apache/jackrabbit/core/cluster/FileJournal.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/cluster/FileJournal.java (revision 488611) +++ src/main/java/org/apache/jackrabbit/core/cluster/FileJournal.java (working copy) @@ -302,7 +302,7 @@ } } catch (IOException e) { String msg = "Unable to iterate over modified records: " + e.getMessage(); - throw new JournalException(msg); + throw new JournalException(msg, e); } finally { try { Index: src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java (revision 488611) +++ src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java (working copy) @@ -391,7 +391,7 @@ } catch (NoSuchItemStateException nsis) { String msg = "failed to resolve name of " + nodeId; log.debug(msg); - throw new ItemNotFoundException(nodeId.toString()); + throw new ItemNotFoundException(nodeId.toString(), nsis); } catch (ItemStateException ise) { String msg = "failed to resolve name of " + nodeId; log.debug(msg); Index: src/main/java/org/apache/jackrabbit/core/ItemManager.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/ItemManager.java (revision 488611) +++ src/main/java/org/apache/jackrabbit/core/ItemManager.java (working copy) @@ -197,7 +197,7 @@ } catch (NoSuchItemStateException nsise) { String msg = "no such item: " + id; log.debug(msg); - throw new ItemNotFoundException(msg); + throw new ItemNotFoundException(msg, nsise); } catch (ItemStateException ise) { String msg = "failed to retrieve item state of " + id; log.error(msg); @@ -297,7 +297,7 @@ try { return getItem(id); } catch (ItemNotFoundException infe) { - throw new PathNotFoundException(safeGetJCRPath(path)); + throw new PathNotFoundException(safeGetJCRPath(path), infe); } } Index: src/main/java/org/apache/jackrabbit/core/query/sql/JCRSQLQueryBuilder.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/query/sql/JCRSQLQueryBuilder.java (revision 488611) +++ src/main/java/org/apache/jackrabbit/core/query/sql/JCRSQLQueryBuilder.java (working copy) @@ -143,9 +143,9 @@ } return builder.getRootNode(); } catch (ParseException e) { - throw new InvalidQueryException(e.getMessage()); + throw new InvalidQueryException(e.getMessage(), e); } catch (IllegalArgumentException e) { - throw new InvalidQueryException(e.getMessage()); + throw new InvalidQueryException(e.getMessage(), e); } catch (Throwable t) { // javacc parser may also throw an error in some cases throw new InvalidQueryException(t.getMessage()); Index: src/main/java/org/apache/jackrabbit/core/SearchManager.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/SearchManager.java (revision 488611) +++ src/main/java/org/apache/jackrabbit/core/SearchManager.java (working copy) @@ -483,7 +483,8 @@ + " is not of type " + AbstractQueryImpl.class.getName()); } } catch (Throwable t) { - throw new RepositoryException("Unable to create query: " + t.toString()); + throw new RepositoryException("Unable to create query: " + + t.toString(), t); } } Index: src/main/java/org/apache/jackrabbit/core/value/InternalValue.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/value/InternalValue.java (revision 488611) +++ src/main/java/org/apache/jackrabbit/core/value/InternalValue.java (working copy) @@ -125,15 +125,15 @@ try { return new InternalValue(NameFormat.parse(value.getString(), nsResolver)); } catch (IllegalNameException ine) { - throw new ValueFormatException(ine.getMessage()); + throw new ValueFormatException(ine.getMessage(), ine); } catch (UnknownPrefixException upe) { - throw new ValueFormatException(upe.getMessage()); + throw new ValueFormatException(upe.getMessage(), upe); } case PropertyType.PATH: try { return new InternalValue(PathFormat.parse(value.getString(), nsResolver)); } catch (MalformedPathException mpe) { - throw new ValueFormatException(mpe.getMessage()); + throw new ValueFormatException(mpe.getMessage(), mpe); } case PropertyType.STRING: return new InternalValue(value.getString());