You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/08/10 11:28:09 UTC
svn commit: r983900 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
./ query/ query/lucene/ session/
Author: jukka
Date: Tue Aug 10 09:28:07 2010
New Revision: 983900
URL: http://svn.apache.org/viewvc?rev=983900&view=rev
Log:
JCR-890: concurrent read-only access to a session
Simplify things by making SessionContext implement NamePathResolver
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/AddMixinOperation.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RemoveMixinOperation.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryResultImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/AddNodeOperation.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionItemOperation.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/AddMixinOperation.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/AddMixinOperation.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/AddMixinOperation.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/AddMixinOperation.java Tue Aug 10 09:28:07 2010
@@ -59,8 +59,6 @@ class AddMixinOperation implements Sessi
}
public Object perform(SessionContext context) throws RepositoryException {
- SessionImpl session = context.getSessionImpl();
-
int permissions = Permission.NODE_TYPE_MNGMT;
// special handling of mix:(simple)versionable. since adding the
// mixin alters the version storage jcr:versionManagement privilege
@@ -69,16 +67,17 @@ class AddMixinOperation implements Sessi
|| MIX_SIMPLE_VERSIONABLE.equals(mixinName)) {
permissions |= Permission.VERSION_MNGMT;
}
- session.getValidator().checkModify(
+ context.getSessionImpl().getValidator().checkModify(
node,
CHECK_LOCK | CHECK_CHECKED_OUT | CHECK_CONSTRAINTS | CHECK_HOLD,
permissions);
- NodeTypeManagerImpl ntMgr = session.getNodeTypeManager();
+ NodeTypeManagerImpl ntMgr =
+ context.getSessionImpl().getNodeTypeManager();
NodeTypeImpl mixin = ntMgr.getNodeType(mixinName);
if (!mixin.isMixin()) {
throw new RepositoryException(
- session.getJCRName(mixinName) + " is not a mixin node type");
+ context.getJCRName(mixinName) + " is not a mixin node type");
}
Name primaryTypeName = node.getNodeState().getNodeTypeName();
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java Tue Aug 10 09:28:07 2010
@@ -222,7 +222,7 @@ public abstract class ItemImpl implement
* @throws RepositoryException if the given name is invalid
*/
protected Name getQName(String name) throws RepositoryException {
- return session.getQName(name);
+ return sessionContext.getQName(name);
}
/**
@@ -379,7 +379,7 @@ public abstract class ItemImpl implement
return perform(new SessionOperation<String>() {
public String perform(SessionContext context)
throws RepositoryException {
- return context.getSessionImpl().getJCRPath(getPrimaryPath());
+ return context.getJCRPath(getPrimaryPath());
}
});
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java Tue Aug 10 09:28:07 2010
@@ -42,7 +42,6 @@ import org.apache.jackrabbit.spi.Path;
import org.apache.jackrabbit.spi.QPropertyDefinition;
import org.apache.jackrabbit.spi.QItemDefinition;
import org.apache.jackrabbit.spi.QNodeDefinition;
-import org.apache.jackrabbit.spi.commons.conversion.PathResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -113,11 +112,6 @@ public class ItemValidator {
protected final NodeTypeRegistry ntReg;
/**
- * Path resolver for outputting user-friendly error messages.
- */
- protected final PathResolver resolver;
-
- /**
* Creates a new <code>ItemValidator</code> instance.
*
* @param sessionContext component context of this session
@@ -125,7 +119,6 @@ public class ItemValidator {
public ItemValidator(SessionContext sessionContext) throws RepositoryException {
this.sessionContext = sessionContext;
this.ntReg = sessionContext.getRepositoryContext().getNodeTypeRegistry();
- this.resolver = sessionContext.getSessionImpl();
}
/**
@@ -490,7 +483,7 @@ public class ItemValidator {
*/
public String safeGetJCRPath(Path path) {
try {
- return resolver.getJCRPath(path);
+ return sessionContext.getJCRPath(path);
} catch (NamespaceException e) {
log.error("failed to convert {} to a JCR path", path);
// return string representation of internal path as a fallback
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java Tue Aug 10 09:28:07 2010
@@ -1173,7 +1173,7 @@ public class NodeImpl extends ItemImpl i
return (PropertyImpl) context.getItemManager().getItem(
new PropertyId(getNodeId(), name));
} catch (AccessDeniedException ade) {
- String n = context.getSessionImpl().getJCRName(name);
+ String n = context.getJCRName(name);
throw new ItemNotFoundException(
"Property " + n + " not found");
}
@@ -1667,7 +1667,7 @@ public class NodeImpl extends ItemImpl i
name = context.getHierarchyManager().getName(
getNodeId(), parentId);
}
- return context.getSessionImpl().getJCRName(name);
+ return context.getJCRName(name);
}
});
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RemoveMixinOperation.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RemoveMixinOperation.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RemoveMixinOperation.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RemoveMixinOperation.java Tue Aug 10 09:28:07 2010
@@ -85,7 +85,7 @@ class RemoveMixinOperation implements Se
NodeState state = node.getNodeState();
if (!state.getMixinTypeNames().contains(mixinName)) {
throw new NoSuchNodeTypeException(
- "Mixin " + session.getJCRName(mixinName)
+ "Mixin " + context.getJCRName(mixinName)
+ " not included in " + node);
}
@@ -177,7 +177,7 @@ class RemoveMixinOperation implements Se
} catch (ItemStateException e) {
throw new RepositoryException(
"Failed to determine effect of removing mixin "
- + session.getJCRName(mixinName), e);
+ + context.getJCRName(mixinName), e);
}
// modify the state of this node
@@ -278,7 +278,7 @@ class RemoveMixinOperation implements Se
} catch (ItemStateException e) {
throw new RepositoryException(
"Failed to clean up child items defined by removed mixin "
- + session.getJCRName(mixinName), e);
+ + context.getJCRName(mixinName), e);
} finally {
if (!success) {
// TODO JCR-1914: revert any changes made so far
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryImpl.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryImpl.java Tue Aug 10 09:28:07 2010
@@ -179,20 +179,19 @@ public class QueryImpl extends AbstractQ
RepositoryException {
checkInitialized();
- NamePathResolver resolver = sessionContext.getSessionImpl();
try {
- Path p = resolver.getQPath(absPath).getNormalizedPath();
+ Path p = sessionContext.getQPath(absPath).getNormalizedPath();
if (!p.isAbsolute()) {
throw new RepositoryException(absPath + " is not an absolute path");
}
- String relPath = resolver.getJCRPath(p).substring(1);
+ String relPath = sessionContext.getJCRPath(p).substring(1);
Node queryNode =
sessionContext.getSessionImpl().getRootNode().addNode(
- relPath, resolver.getJCRName(NT_QUERY));
+ relPath, sessionContext.getJCRName(NT_QUERY));
// set properties
- queryNode.setProperty(resolver.getJCRName(JCR_LANGUAGE), language);
- queryNode.setProperty(resolver.getJCRName(JCR_STATEMENT), statement);
+ queryNode.setProperty(sessionContext.getJCRName(JCR_LANGUAGE), language);
+ queryNode.setProperty(sessionContext.getJCRName(JCR_STATEMENT), statement);
node = queryNode;
return node;
} catch (NameException e) {
@@ -204,11 +203,10 @@ public class QueryImpl extends AbstractQ
* {@inheritDoc}
*/
public String[] getBindVariableNames() throws RepositoryException {
- NameResolver resolver = sessionContext.getSessionImpl();
Name[] names = query.getBindVariableNames();
String[] strNames = new String[names.length];
for (int i = 0; i < names.length; i++) {
- strNames[i] = resolver.getJCRName(names[i]);
+ strNames[i] = sessionContext.getJCRName(names[i]);
}
return strNames;
}
@@ -227,7 +225,7 @@ public class QueryImpl extends AbstractQ
throws IllegalArgumentException, RepositoryException {
checkInitialized();
try {
- query.bindValue(sessionContext.getSessionImpl().getQName(varName), value);
+ query.bindValue(sessionContext.getQName(varName), value);
} catch (NameException e) {
throw new RepositoryException(e.getMessage());
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java Tue Aug 10 09:28:07 2010
@@ -75,8 +75,7 @@ public class QueryManagerImpl implements
throws RepositoryException {
this.sessionContext = sessionContext;
this.searchMgr = searchMgr;
- this.qomFactory = new QueryObjectModelFactoryImpl(
- sessionContext.getSessionImpl()) {
+ this.qomFactory = new QueryObjectModelFactoryImpl(sessionContext) {
protected QueryObjectModel createQuery(QueryObjectModelTree qomTree)
throws InvalidQueryException, RepositoryException {
return searchMgr.createQueryObjectModel(
@@ -106,15 +105,14 @@ public class QueryManagerImpl implements
return perform(new SessionOperation<Query>() {
public Query perform(SessionContext context)
throws RepositoryException {
- NamePathResolver resolver = context.getSessionImpl();
- if (!node.isNodeType(resolver.getJCRName(NT_QUERY))) {
+ if (!node.isNodeType(context.getJCRName(NT_QUERY))) {
throw new InvalidQueryException(
"Node is not of type nt:query: " + node);
}
String statement =
- node.getProperty(resolver.getJCRName(JCR_STATEMENT)).getString();
+ node.getProperty(context.getJCRName(JCR_STATEMENT)).getString();
String language =
- node.getProperty(resolver.getJCRName(JCR_LANGUAGE)).getString();
+ node.getProperty(context.getJCRName(JCR_LANGUAGE)).getString();
QueryFactory qf = new QueryFactoryImpl(node, language);
return qf.createQuery(statement, language);
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java Tue Aug 10 09:28:07 2010
@@ -20,6 +20,7 @@ import java.util.LinkedHashMap;
import java.util.Map;
import javax.jcr.RepositoryException;
+import javax.jcr.Workspace;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.query.InvalidQueryException;
import javax.jcr.query.QueryResult;
@@ -89,7 +90,7 @@ public class QueryImpl extends AbstractQ
// parse query according to language
// build query tree using the passed factory
this.root = QueryParser.parse(
- statement, language, sessionContext.getSessionImpl(), factory);
+ statement, language, sessionContext, factory);
}
/**
@@ -144,13 +145,14 @@ public class QueryImpl extends AbstractQ
*/
protected ColumnImpl[] getColumns() throws RepositoryException {
SessionImpl session = sessionContext.getSessionImpl();
- QueryObjectModelFactory qomFactory = session.getWorkspace().getQueryManager().getQOMFactory();
+ QueryObjectModelFactory qomFactory =
+ session.getWorkspace().getQueryManager().getQOMFactory();
// get columns
Map<Name, ColumnImpl> columns = new LinkedHashMap<Name, ColumnImpl>();
for (Name name : root.getSelectProperties()) {
- String pn = session.getJCRName(name);
+ String pn = sessionContext.getJCRName(name);
ColumnImpl col = (ColumnImpl) qomFactory.column(
- session.getJCRName(DEFAULT_SELECTOR_NAME), pn, pn);
+ sessionContext.getJCRName(DEFAULT_SELECTOR_NAME), pn, pn);
columns.put(name, col);
}
if (columns.size() == 0) {
@@ -212,11 +214,11 @@ public class QueryImpl extends AbstractQ
* @throws RepositoryException if an error occurs while creating the column.
*/
protected ColumnImpl columnForName(Name propertyName) throws RepositoryException {
- SessionImpl session = sessionContext.getSessionImpl();
+ Workspace workspace = sessionContext.getSessionImpl().getWorkspace();
QueryObjectModelFactory qomFactory =
- session.getWorkspace().getQueryManager().getQOMFactory();
- String name = session.getJCRName(propertyName);
+ workspace.getQueryManager().getQOMFactory();
+ String name = sessionContext.getJCRName(propertyName);
return (ColumnImpl) qomFactory.column(
- session.getJCRName(DEFAULT_SELECTOR_NAME), name, name);
+ sessionContext.getJCRName(DEFAULT_SELECTOR_NAME), name, name);
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryResultImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryResultImpl.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryResultImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryResultImpl.java Tue Aug 10 09:28:07 2010
@@ -164,10 +164,9 @@ public abstract class QueryResultImpl im
* {@inheritDoc}
*/
public String[] getSelectorNames() throws RepositoryException {
- NameResolver resolver = sessionContext.getSessionImpl();
String[] names = new String[selectorNames.length];
for (int i = 0; i < selectorNames.length; i++) {
- names[i] = resolver.getJCRName(selectorNames[i]);
+ names[i] = sessionContext.getJCRName(selectorNames[i]);
}
return names;
}
@@ -202,7 +201,7 @@ public abstract class QueryResultImpl im
getScoreNodes(), columns,
selectorNames, sessionContext.getItemManager(),
index.getContext().getHierarchyManager(),
- sessionContext.getSessionImpl(),
+ sessionContext,
sessionContext.getSessionImpl().getValueFactory(),
excerptProvider, spellSuggestion);
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/AddNodeOperation.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/AddNodeOperation.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/AddNodeOperation.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/AddNodeOperation.java Tue Aug 10 09:28:07 2010
@@ -25,7 +25,6 @@ import javax.jcr.nodetype.ConstraintViol
import org.apache.jackrabbit.core.ItemManager;
import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
@@ -55,14 +54,13 @@ public class AddNodeOperation implements
}
public Node perform(SessionContext context) throws RepositoryException {
- SessionImpl session = context.getSessionImpl();
ItemManager itemMgr = context.getItemManager();
// Get the canonical path of the new node
Path path;
try {
path = PathFactoryImpl.getInstance().create(
- node.getPrimaryPath(), session.getQPath(relPath), true);
+ node.getPrimaryPath(), context.getQPath(relPath), true);
} catch (NameException e) {
throw new RepositoryException(
"Failed to resolve path " + relPath
@@ -86,7 +84,7 @@ public class AddNodeOperation implements
if (itemMgr.propertyExists(parentPath)) {
throw new ConstraintViolationException(
"Unable to add a child node to property "
- + session.getJCRPath(parentPath));
+ + context.getJCRPath(parentPath));
}
throw e;
} catch (AccessDeniedException ade) {
@@ -98,7 +96,7 @@ public class AddNodeOperation implements
// Resolve node type name (if any)
Name typeName = null;
if (nodeTypeName != null) {
- typeName = session.getQName(nodeTypeName);
+ typeName = context.getQName(nodeTypeName);
}
// Check that the given UUID (if any) does not already exist
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java Tue Aug 10 09:28:07 2010
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.core.session;
+import javax.jcr.NamespaceException;
+
import org.apache.jackrabbit.core.HierarchyManager;
import org.apache.jackrabbit.core.ItemManager;
import org.apache.jackrabbit.core.ItemValidator;
@@ -26,8 +28,13 @@ import org.apache.jackrabbit.core.id.Nod
import org.apache.jackrabbit.core.observation.ObservationManagerImpl;
import org.apache.jackrabbit.core.security.AccessManager;
import org.apache.jackrabbit.core.state.SessionItemStateManager;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.commons.conversion.IllegalNameException;
+import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
+import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-public class SessionContext {
+public class SessionContext implements NamePathResolver {
private final RepositoryContext repositoryContext;
@@ -156,4 +163,33 @@ public class SessionContext {
this.observationManager = observationManager;
}
+ //--------------------------------------------------------< NameResolver >
+
+ public Name getQName(String name)
+ throws IllegalNameException, NamespaceException {
+ return session.getQName(name);
+ }
+
+ public String getJCRName(Name name) throws NamespaceException {
+ return session.getJCRName(name);
+ }
+
+ //--------------------------------------------------------< PathResolver >
+
+ public Path getQPath(String path)
+ throws MalformedPathException, IllegalNameException,
+ NamespaceException {
+ return session.getQPath(path);
+ }
+
+ public Path getQPath(String path, boolean normalizeIdentifier)
+ throws MalformedPathException, IllegalNameException,
+ NamespaceException {
+ return session.getQPath(path, normalizeIdentifier);
+ }
+
+ public String getJCRPath(Path path) throws NamespaceException {
+ return session.getJCRPath(path);
+ }
+
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionItemOperation.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionItemOperation.java?rev=983900&r1=983899&r2=983900&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionItemOperation.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionItemOperation.java Tue Aug 10 09:28:07 2010
@@ -42,7 +42,7 @@ public abstract class SessionItemOperati
public T perform(SessionContext context) throws RepositoryException {
try {
Path normalized =
- context.getSessionImpl().getQPath(path).getNormalizedPath();
+ context.getQPath(path).getNormalizedPath();
if (normalized.isAbsolute()) {
return perform(context.getItemManager(), normalized);
} else {