You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2009/04/20 18:58:12 UTC
svn commit: r766754 - in
/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi:
./ hierarchy/ operation/ query/ state/ util/
Author: mduerig
Date: Mon Apr 20 16:58:12 2009
New Revision: 766754
URL: http://svn.apache.org/viewvc?rev=766754&view=rev
Log:
1.5: Backported revision 719282 (JCR-1871)
Modified:
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryFactory.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEntryImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManager.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManagerImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetMixin.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java
jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java Mon Apr 20 16:58:12 2009
@@ -108,13 +108,14 @@
if (depth == 0) {
return session.getRootNode();
}
+ String msg = "No ancestor at depth = " + depth;
try {
// Path.getAncestor requires relative degree, i.e. we need
// to convert absolute to relative ancestor degree
Path path = getQPath();
int relDegree = path.getAncestorCount() - depth;
if (relDegree < 0) {
- throw new ItemNotFoundException();
+ throw new ItemNotFoundException(msg);
}
Path ancestorPath = path.getAncestor(relDegree);
if (relDegree == 0) {
@@ -122,8 +123,8 @@
} else {
return getItemManager().getNode(ancestorPath);
}
- } catch (PathNotFoundException pnfe) {
- throw new ItemNotFoundException();
+ } catch (PathNotFoundException e) {
+ throw new ItemNotFoundException(msg);
}
}
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java Mon Apr 20 16:58:12 2009
@@ -200,7 +200,7 @@
session.checkIsAlive();
ItemState state = hierarchyEntry.getItemState();
if (!state.isValid()) {
- throw new ItemNotFoundException();
+ throw new ItemNotFoundException(LogUtil.safeGetJCRPath(state, session.getPathResolver()));
}
// first try to access item from cache
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java Mon Apr 20 16:58:12 2009
@@ -556,7 +556,8 @@
* qualified name.
*
* @param propertyName
- * @return
+ * @return <code>true</code>, if this <code>Node</code> has a property with
+ * the given name.
*/
private boolean hasProperty(Name propertyName) {
return getNodeEntry().hasPropertyEntry(propertyName);
@@ -678,7 +679,7 @@
* NOTE, that the result of this method, does NOT represent the list of
* mixin-types that currently affect this node.
*
- * @return
+ * @return mixin names present with the jcr:mixinTypes property.
*/
private List getMixinTypes() {
Name[] mixinValue;
@@ -1285,11 +1286,11 @@
try {
PropertyEntry pEntry = getNodeEntry().getPropertyEntry(qName, true);
if (pEntry == null) {
- throw new PathNotFoundException(qName.toString());
+ throw new PathNotFoundException(LogUtil.saveGetJCRName(qName, session.getNameResolver()));
}
return (Property) getItemManager().getItem(pEntry);
} catch (AccessDeniedException e) {
- throw new PathNotFoundException(qName.toString());
+ throw new PathNotFoundException(LogUtil.saveGetJCRName(qName, session.getNameResolver()));
}
}
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java Mon Apr 20 16:58:12 2009
@@ -23,6 +23,7 @@
import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry;
import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl;
import org.apache.jackrabbit.jcr2spi.lock.LockManager;
import org.apache.jackrabbit.jcr2spi.nodetype.EffectiveNodeTypeProvider;
import org.apache.jackrabbit.jcr2spi.nodetype.ItemDefinitionProvider;
@@ -40,6 +41,7 @@
import org.apache.jackrabbit.jcr2spi.xml.ImportHandler;
import org.apache.jackrabbit.jcr2spi.xml.Importer;
import org.apache.jackrabbit.jcr2spi.xml.SessionImporter;
+import org.apache.jackrabbit.jcr2spi.util.LogUtil;
import org.apache.jackrabbit.spi.IdFactory;
import org.apache.jackrabbit.spi.NameFactory;
import org.apache.jackrabbit.spi.NodeId;
@@ -143,7 +145,12 @@
validator = new ItemStateValidator(this, getPathFactory());
itemStateManager = createSessionItemStateManager(workspace.getUpdatableItemStateManager(), workspace.getItemStateFactory());
- itemManager = createItemManager(getHierarchyManager());
+ HierarchyManager hMgr = getHierarchyManager();
+ itemManager = createItemManager(hMgr);
+
+ if (hMgr instanceof HierarchyManagerImpl) {
+ ((HierarchyManagerImpl) hMgr).setResolver(npResolver);
+ }
}
//--------------------------------------------------< Session interface >---
@@ -253,10 +260,10 @@
return (Node) item;
} else {
log.error("NodeId '" + id + " does not point to a Node");
- throw new ItemNotFoundException(id.toString());
+ throw new ItemNotFoundException(LogUtil.saveGetIdString(id, getPathResolver()));
}
} catch (AccessDeniedException e) {
- throw new ItemNotFoundException(id.toString());
+ throw new ItemNotFoundException(LogUtil.saveGetIdString(id, getPathResolver()));
}
}
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java Mon Apr 20 16:58:12 2009
@@ -404,8 +404,7 @@
}
/**
- *
- * @return
+ * @return a new instance of <code>TransientItemStateFactory</code>.
*/
private TransientItemStateFactory createItemStateFactory() {
WorkspaceItemStateFactory isf = new WorkspaceItemStateFactory(service, sessionInfo, getItemDefinitionProvider());
@@ -414,16 +413,14 @@
}
/**
- *
- * @return
+ * @return a new instance of <code>HierarchyManager</code>.
*/
private HierarchyManager createHierarchyManager(TransientItemStateFactory tisf, IdFactory idFactory) throws RepositoryException {
return new HierarchyManagerImpl(tisf, idFactory, getPathFactory());
}
/**
- *
- * @return
+ * @return a new InternalEventListener
*/
private InternalEventListener createHierarchyListener(HierarchyManager hierarchyMgr) {
InternalEventListener listener = new HierarchyEventListener(this, hierarchyMgr, cacheBehaviour);
@@ -431,9 +428,8 @@
}
/**
- *
* @param nsRegistry
- * @return
+ * @return an instance of <code>NodeTypeRegistryImpl</code>.
*/
private NodeTypeRegistryImpl createNodeTypeRegistry(NamespaceRegistry nsRegistry) {
NodeTypeStorage ntst = new NodeTypeStorage() {
@@ -459,9 +455,8 @@
}
/**
- *
* @param entProvider
- * @return
+ * @return a new instance of <code>ItemDefinitionProvider</code>.
*/
private ItemDefinitionProvider createDefinitionProvider(EffectiveNodeTypeProvider entProvider) {
return new ItemDefinitionProviderImpl(entProvider, service, sessionInfo);
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryFactory.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryFactory.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/EntryFactory.java Mon Apr 20 16:58:12 2009
@@ -19,9 +19,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.jcr2spi.state.TransientItemStateFactory;
+import org.apache.jackrabbit.jcr2spi.util.LogUtil;
import org.apache.jackrabbit.spi.IdFactory;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.PathFactory;
+import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
/**
* <code>EntryFactory</code>...
@@ -49,7 +52,21 @@
*/
private final TransientItemStateFactory isf;
- public EntryFactory(TransientItemStateFactory isf, IdFactory idFactory, NodeEntryListener listener, PathFactory pathFactory) {
+ /**
+ * NamePathResolver used to generate human readable error messages.
+ */
+ private NamePathResolver resolver;
+
+ /**
+ * Create a new instance of the <code>EntryFactory</code>.
+ *
+ * @param isf
+ * @param idFactory
+ * @param listener
+ * @param pathFactory
+ */
+ public EntryFactory(TransientItemStateFactory isf, IdFactory idFactory,
+ NodeEntryListener listener, PathFactory pathFactory) {
this.idFactory = idFactory;
this.pathFactory = pathFactory;
this.isf = isf;
@@ -58,8 +75,7 @@
}
/**
- *
- * @return
+ * @return the root entry.
*/
public NodeEntry createRootEntry() {
return rootEntry;
@@ -100,10 +116,30 @@
}
//--------------------------------------------------------------------------
+ /**
+ * @param resolver
+ */
+ void setResolver(NamePathResolver resolver) {
+ this.resolver = resolver;
+ }
+
+ /**
+ * @param path
+ * @return jcr presentation of the specified path.
+ */
+ String saveGetJCRPath(Path path) {
+ if (resolver == null) {
+ return path.toString();
+ } else {
+ return LogUtil.safeGetJCRPath(path, resolver);
+ }
+ }
+
+ //--------------------------------------------------------------------------
public interface NodeEntryListener {
public void entryCreated(NodeEntry entry);
public void uniqueIdChanged (NodeEntry entry, String previousUniqueID);
}
-}
\ No newline at end of file
+}
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEntryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEntryImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEntryImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEntryImpl.java Mon Apr 20 16:58:12 2009
@@ -131,7 +131,7 @@
abstract Path buildPath(boolean workspacePath) throws RepositoryException;
/**
- * @return
+ * @return the item state or <code>null</code> if the entry isn't resolved.
*/
ItemState internalGetItemState() {
ItemState state = null;
@@ -374,8 +374,7 @@
//--------------------------------------------------------------------------
/**
- *
- * @param keepNew
+ * @param staleParent
*/
void internalRemove(boolean staleParent) {
ItemState state = internalGetItemState();
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManager.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManager.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManager.java Mon Apr 20 16:58:12 2009
@@ -38,8 +38,7 @@
public void dispose();
/**
- *
- * @return
+ * @return the root entry.
*/
public NodeEntry getRootEntry();
@@ -54,7 +53,7 @@
* loaded yet.
*
* @param workspaceItemId
- * @return
+ * @return the HierarchyEntry with the given <code>workspaceItemId</code>.
*/
public HierarchyEntry lookup(ItemId workspaceItemId);
@@ -67,8 +66,8 @@
* or {@link #getPropertyEntry(Path)} for methods that resolves the path
* including lookup in the persistence layer if the entry has not been loaded yet.
*
- * @param workspaceItemId
- * @return
+ * @param workspacePath
+ * @return the HierarchyEntry with the given <code>workspacePath</code>.
*/
public HierarchyEntry lookup(Path workspacePath);
@@ -160,4 +159,4 @@
* @throws RepositoryException If another error occurs.
*/
public int getRelativeDepth(NodeEntry ancestor, HierarchyEntry descendant) throws ItemNotFoundException, RepositoryException;
-}
\ No newline at end of file
+}
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManagerImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManagerImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyManagerImpl.java Mon Apr 20 16:58:12 2009
@@ -19,12 +19,14 @@
import org.apache.jackrabbit.jcr2spi.state.NodeState;
import org.apache.jackrabbit.jcr2spi.state.PropertyState;
import org.apache.jackrabbit.jcr2spi.state.TransientItemStateFactory;
+import org.apache.jackrabbit.jcr2spi.util.LogUtil;
import org.apache.jackrabbit.spi.IdFactory;
import org.apache.jackrabbit.spi.ItemId;
import org.apache.jackrabbit.spi.NodeId;
import org.apache.jackrabbit.spi.Path;
import org.apache.jackrabbit.spi.PathFactory;
import org.apache.jackrabbit.spi.PropertyId;
+import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,11 +40,12 @@
*/
public class HierarchyManagerImpl implements HierarchyManager {
- private static Logger log = LoggerFactory.getLogger(org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl.class);
+ private static Logger log = LoggerFactory.getLogger(HierarchyManagerImpl.class);
private final NodeEntry rootEntry;
private final UniqueIdResolver uniqueIdResolver;
private final IdFactory idFactory;
+ private NamePathResolver resolver;
public HierarchyManagerImpl(TransientItemStateFactory isf, IdFactory idFactory,
PathFactory pathFactory) {
@@ -51,6 +54,13 @@
this.idFactory = idFactory;
}
+ public void setResolver(NamePathResolver resolver) {
+ this.resolver = resolver;
+ if (rootEntry instanceof HierarchyEntryImpl) {
+ ((HierarchyEntryImpl) rootEntry).factory.setResolver(resolver);
+ }
+ }
+
//---------------------------------------------------< HierarchyManager >---
/**
* @see HierarchyManager#dispose()
@@ -138,7 +148,7 @@
} else {
if (propertyId.getPath() == null) {
// a property id always contains a Path part.
- throw new ItemNotFoundException();
+ throw new ItemNotFoundException("No property found for id " + LogUtil.saveGetIdString(propertyId, resolver));
} else {
NodeEntry nEntry = uniqueIdResolver.resolve(idFactory.createNodeId(uniqueID), rootEntry);
return nEntry.getDeepPropertyEntry(propertyId.getPath());
@@ -173,7 +183,7 @@
if (state.isValid()) {
return state;
} else {
- throw new PathNotFoundException();
+ throw new PathNotFoundException(LogUtil.safeGetJCRPath(qPath, resolver));
}
} catch (ItemNotFoundException e) {
throw new PathNotFoundException(e);
@@ -190,7 +200,7 @@
if (state.isValid()) {
return state;
} else {
- throw new PathNotFoundException();
+ throw new PathNotFoundException(LogUtil.safeGetJCRPath(qPath, resolver));
}
} catch (ItemNotFoundException e) {
throw new PathNotFoundException(e);
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java Mon Apr 20 16:58:12 2009
@@ -397,18 +397,18 @@
// refresh will bring up new entries added in the mean time
// on the persistent layer.
if (entry.childNodeEntries.isComplete()) {
- throw new PathNotFoundException(path.toString());
+ throw new PathNotFoundException(factory.saveGetJCRPath(path));
}
// -> check for moved child entry in node-attic
// -> check if child points to a removed/moved sns
List siblings = entry.childNodeEntries.get(name);
if (entry.containsAtticChild(siblings, name, index)) {
- throw new PathNotFoundException(path.toString());
+ throw new PathNotFoundException(factory.saveGetJCRPath(path));
}
// shortcut: entry is NEW and still unresolved remaining path
// elements -> hierarchy doesn't exist anyway.
if (entry.getStatus() == Status.NEW) {
- throw new PathNotFoundException(path.toString());
+ throw new PathNotFoundException(factory.saveGetJCRPath(path));
}
/*
* Unknown entry (not-existing or not yet loaded):
@@ -435,7 +435,7 @@
if (ne != null) {
return ne;
} else {
- throw new PathNotFoundException(path.toString());
+ throw new PathNotFoundException(factory.saveGetJCRPath(path));
}
}
}
@@ -471,13 +471,13 @@
// refresh will bring up new entries added in the mean time
// on the persistent layer.
if (entry.childNodeEntries.isComplete()) {
- throw new PathNotFoundException(path.toString());
+ throw new PathNotFoundException(factory.saveGetJCRPath(path));
}
// -> check for moved child entry in node-attic
// -> check if child points to a removed/moved sns
List siblings = entry.childNodeEntries.get(name);
if (entry.containsAtticChild(siblings, name, index)) {
- throw new PathNotFoundException(path.toString());
+ throw new PathNotFoundException(factory.saveGetJCRPath(path));
}
// break out of the loop and start deep loading the property
break;
@@ -513,7 +513,7 @@
}
if (pe == null) {
- throw new PathNotFoundException(path.toString());
+ throw new PathNotFoundException(factory.saveGetJCRPath(path));
}
return pe;
}
@@ -669,7 +669,7 @@
}
/**
- * @see NodeEntry#addNodeEntry(Name, String, int)
+ * @see NodeEntry#getOrAddNodeEntry(Name, int, String)
*/
public NodeEntry getOrAddNodeEntry(Name nodeName, int index, String uniqueID) throws RepositoryException {
NodeEntry ne = lookupNodeEntry(uniqueID, nodeName, index);
@@ -747,7 +747,7 @@
}
/**
- * @see NodeEntry#addPropertyEntry(Name)
+ * @see NodeEntry#getOrAddPropertyEntry(Name)
*/
public PropertyEntry getOrAddPropertyEntry(Name propName) throws ItemExistsException {
PropertyEntry pe = lookupPropertyEntry(propName);
@@ -796,7 +796,7 @@
}
/**
- * @see NodeEntry#addNewPropertyEntry(Name, QPropertyDefinition)
+ * @see NodeEntry#addNewPropertyEntry(Name, QPropertyDefinition, QValue[], int)
*/
public PropertyEntry addNewPropertyEntry(Name propName, QPropertyDefinition definition, QValue[] values, int propertyType)
throws ItemExistsException, RepositoryException {
@@ -1088,7 +1088,7 @@
* @param oldName
* @param oldIndex
* @return <code>true</code> if the given oldName and oldIndex match
- * {@link #getWorkspaceName()} and {@link #getWorkspaceIndex()}, respectively.
+ * {@link #getName(boolean)} and {@link #getIndex(boolean)}, respectively.
*/
boolean matches(Name oldName, int oldIndex) {
try {
@@ -1102,7 +1102,7 @@
/**
* @param oldName
* @return <code>true</code> if the given oldName matches
- * {@link #getWorkspaceName()}.
+ * {@link #getName(boolean)}.
*/
boolean matches(Name oldName) {
return getName(true).equals(oldName);
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetMixin.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetMixin.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetMixin.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetMixin.java Mon Apr 20 16:58:12 2009
@@ -46,7 +46,9 @@
// add the jcr:mixinTypes property state as affected if it already exists
// and therefore gets modified by this operation.
try {
- addAffectedItemState(nodeState.getPropertyState(NameConstants.JCR_MIXINTYPES));
+ if (nodeState.hasPropertyName(NameConstants.JCR_MIXINTYPES)) {
+ addAffectedItemState(nodeState.getPropertyState(NameConstants.JCR_MIXINTYPES));
+ }
} catch (RepositoryException e) {
// jcr:mixinTypes does not exist -> ignore
}
@@ -104,4 +106,4 @@
SetMixin sm = new SetMixin(nodeState, mixinNames);
return sm;
}
-}
\ No newline at end of file
+}
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryImpl.java Mon Apr 20 16:58:12 2009
@@ -26,6 +26,7 @@
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.spi.QueryInfo;
import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
+import org.apache.jackrabbit.spi.commons.conversion.NameException;
import javax.jcr.ItemExistsException;
import javax.jcr.ItemNotFoundException;
@@ -218,7 +219,7 @@
queryNode.setProperty(resolver.getJCRName(NameConstants.JCR_STATEMENT), statement);
node = queryNode;
return node;
- } catch (org.apache.jackrabbit.spi.commons.conversion.NameException e) {
+ } catch (NameException e) {
throw new RepositoryException(e.getMessage(), e);
}
}
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java Mon Apr 20 16:58:12 2009
@@ -30,11 +30,13 @@
import javax.jcr.query.RowIterator;
import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
+import org.apache.jackrabbit.spi.commons.conversion.NameException;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.QueryInfo;
import org.apache.jackrabbit.spi.QueryResultRow;
import org.apache.jackrabbit.spi.QValue;
import org.apache.jackrabbit.spi.commons.value.ValueFormat;
+import org.apache.jackrabbit.jcr2spi.util.LogUtil;
/**
* Implements the {@link javax.jcr.query.RowIterator} interface returned by
@@ -55,7 +57,7 @@
/**
* The <code>NamePathResolver</code> of the user <code>Session</code>.
*/
- private final org.apache.jackrabbit.spi.commons.conversion.NamePathResolver resolver;
+ private final NamePathResolver resolver;
/**
* The JCR value factory.
@@ -256,7 +258,7 @@
getValues();
}
return values[idx.intValue()];
- } catch (org.apache.jackrabbit.spi.commons.conversion.NameException e) {
+ } catch (NameException e) {
throw new RepositoryException(e.getMessage(), e);
}
}
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java Mon Apr 20 16:58:12 2009
@@ -95,7 +95,7 @@
}
return nodeState;
} catch (PathNotFoundException e) {
- throw new ItemNotFoundException(e.getMessage(), e);
+ throw new ItemNotFoundException(e.getMessage());
}
}
@@ -108,7 +108,7 @@
Iterator infos = service.getItemInfos(sessionInfo, nodeId);
return createItemStates(nodeId, infos, anyParent, true);
} catch (PathNotFoundException e) {
- throw new ItemNotFoundException(e.getMessage(), e);
+ throw new ItemNotFoundException(e.getMessage());
}
}
@@ -363,7 +363,7 @@
}
return createNodeState(info, entry);
} catch (PathNotFoundException e) {
- throw new ItemNotFoundException(e.getMessage(), e);
+ throw new ItemNotFoundException(e.getMessage());
}
}
@@ -474,7 +474,7 @@
* See also #JCR-1797 for the corresponding enhancement request.
*
* @param missingElems
- * @return
+ * @return true if the first element doesn't denote a named element.
*/
private static boolean startsWithIllegalElement(Path.Element[] missingElems) {
if (missingElems.length > 0) {
Modified: jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java?rev=766754&r1=766753&r2=766754&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java Mon Apr 20 16:58:12 2009
@@ -20,6 +20,7 @@
import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.spi.Path;
import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.ItemId;
import org.apache.jackrabbit.jcr2spi.state.ItemState;
import org.apache.jackrabbit.spi.ItemId;
import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
@@ -87,4 +88,33 @@
return qName.toString();
}
}
-}
\ No newline at end of file
+
+ /**
+ * Failsafe conversion of an <code>ItemId</code> to a human readable string
+ * resolving the path part of the specified id using the given path resolver.
+ *
+ * @param itemId
+ * @param pathResolver
+ * @return a String representation of the given <code>ItemId</code>.
+ */
+ public static String saveGetIdString(ItemId itemId, PathResolver pathResolver) {
+ Path p = itemId.getPath();
+ if (p == null || pathResolver == null) {
+ return itemId.toString();
+ } else {
+ StringBuffer bf = new StringBuffer();
+ String uniqueID = itemId.getUniqueID();
+ if (uniqueID != null) {
+ bf.append(uniqueID).append(" - ");
+ }
+ String jcrPath;
+ try {
+ jcrPath = pathResolver.getJCRPath(p);
+ } catch (NamespaceException e) {
+ jcrPath = p.toString();
+ }
+ bf.append(jcrPath);
+ return bf.toString();
+ }
+ }
+}