You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2013/03/13 17:27:44 UTC
svn commit: r1456032 - in
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr:
./ delegate/ lock/ query/ query/qom/ version/
Author: mduerig
Date: Wed Mar 13 16:27:43 2013
New Revision: 1456032
URL: http://svn.apache.org/r1456032
Log:
OAK-672: Avoid JCR APIs calling other JCR APIs
- Pass SessionContext instead of SessionDelegate into JCR instance implementations
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ItemDelegate.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java Wed Mar 13 16:27:43 2013
@@ -49,8 +49,8 @@ abstract class ItemImpl<T extends ItemDe
Boolean.getBoolean("OAK-652");
protected final SessionContext sessionContext;
- protected final SessionDelegate sessionDelegate;
protected final T dlg;
+ protected final SessionDelegate sessionDelegate;
/**
* logger instance
@@ -59,8 +59,8 @@ abstract class ItemImpl<T extends ItemDe
protected ItemImpl(T itemDelegate, SessionContext sessionContext) {
this.sessionContext = sessionContext;
- this.sessionDelegate = itemDelegate.getSessionDelegate();
this.dlg = itemDelegate;
+ this.sessionDelegate = sessionContext.getSessionDelegate();
}
protected <X> X perform(SessionOperation<X> operation)
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java Wed Mar 13 16:27:43 2013
@@ -69,8 +69,8 @@ public abstract class SessionContext {
ValueFactoryImpl valueFactory = new ValueFactoryImpl(root.getBlobFactory(), namePathMapper);
return new SessionContext(checkNotNull(repository), delegate, namePathMapper, valueFactory){
- private final SessionImpl session = new SessionImpl(delegate, this, namespaces);
- private final WorkspaceImpl workspace = new WorkspaceImpl(delegate, this);
+ private final SessionImpl session = new SessionImpl(this, namespaces);
+ private final WorkspaceImpl workspace = new WorkspaceImpl(this);
@Override
public SessionImpl getSession() {
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java Wed Mar 13 16:27:43 2013
@@ -72,9 +72,8 @@ public class SessionImpl extends Abstrac
*/
private static final Logger log = LoggerFactory.getLogger(SessionImpl.class);
- private final SessionDelegate dlg;
-
private SessionContext sessionContext;
+ private final SessionDelegate dlg;
/**
* Local namespace remappings. Prefixes as keys and namespace URIs as values.
@@ -84,9 +83,9 @@ public class SessionImpl extends Abstrac
*/
private final Map<String, String> namespaces;
- SessionImpl(SessionDelegate dlg, SessionContext sessionContext, Map<String, String> namespaces) {
- this.dlg = dlg;
+ SessionImpl(SessionContext sessionContext, Map<String, String> namespaces) {
this.sessionContext = sessionContext;
+ this.dlg = sessionContext.getSessionDelegate();
this.namespaces = namespaces;
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java Wed Mar 13 16:27:43 2013
@@ -55,19 +55,19 @@ import static org.apache.jackrabbit.oak.
*/
public class WorkspaceImpl implements JackrabbitWorkspace {
- private final SessionDelegate sessionDelegate;
private final SessionContext sessionContext;
+ private final SessionDelegate sessionDelegate;
private final QueryManagerImpl queryManager;
private final LockManager lockManager;
private final VersionManagerImpl versionManager;
private final ReadWriteNodeTypeManager nodeTypeManager;
- public WorkspaceImpl(final SessionDelegate sessionDelegate, final SessionContext sessionContext) {
- this.sessionDelegate = sessionDelegate;
+ public WorkspaceImpl(final SessionContext sessionContext) {
this.sessionContext = sessionContext;
- this.queryManager = new QueryManagerImpl(sessionDelegate, sessionContext);
- this.lockManager = new LockManagerImpl(sessionDelegate, sessionContext);
- this.versionManager = new VersionManagerImpl(sessionDelegate, sessionContext);
+ this.sessionDelegate = sessionContext.getSessionDelegate();
+ this.queryManager = new QueryManagerImpl(sessionContext);
+ this.lockManager = new LockManagerImpl(sessionContext);
+ this.versionManager = new VersionManagerImpl(sessionContext);
this.nodeTypeManager = new ReadWriteNodeTypeManager() {
@Override
protected void refresh() throws RepositoryException {
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ItemDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ItemDelegate.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ItemDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ItemDelegate.java Wed Mar 13 16:27:43 2013
@@ -101,15 +101,6 @@ public abstract class ItemDelegate {
}
/**
- * Get the session delegate with which this item is associated
- * @return {@link SessionDelegate} to which this item belongs
- */
- @Nonnull
- public final SessionDelegate getSessionDelegate() {
- return sessionDelegate;
- }
-
- /**
* The underlying {@link org.apache.jackrabbit.oak.api.TreeLocation} of this item.
* @return tree location of the underlying item
* @throws InvalidItemStateException if the location points to a stale item
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java Wed Mar 13 16:27:43 2013
@@ -29,7 +29,6 @@ import javax.jcr.lock.LockException;
import javax.jcr.lock.LockManager;
import org.apache.jackrabbit.oak.jcr.SessionContext;
-import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
/**
* Simple lock manager implementation that just keeps track of a set of lock
@@ -38,12 +37,10 @@ import org.apache.jackrabbit.oak.jcr.del
*/
public class LockManagerImpl implements LockManager {
- private final SessionDelegate sessionDelegate;
private final SessionContext sessionContext;
private final Set<String> tokens = new HashSet<String>();
- public LockManagerImpl(SessionDelegate sessionDelegate, SessionContext sessionContext) {
- this.sessionDelegate = sessionDelegate;
+ public LockManagerImpl(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java Wed Mar 13 16:27:43 2013
@@ -37,7 +37,6 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.jcr.NodeImpl;
import org.apache.jackrabbit.oak.jcr.SessionContext;
import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
-import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
/**
* The implementation of the corresponding JCR interface.
@@ -135,10 +134,9 @@ public class QueryImpl implements Query
@Override
public Node storeAsNode(String absPath) throws RepositoryException {
manager.ensureIsAlive();
- SessionDelegate sessionDelegate = manager.getSessionDelegate();
String oakPath = sessionContext.getOakPath(absPath);
String parent = PathUtils.getParentPath(oakPath);
- NodeDelegate parentDelegate = sessionDelegate.getNode(parent);
+ NodeDelegate parentDelegate = sessionContext.getSessionDelegate().getNode(parent);
if (parentDelegate == null) {
throw new PathNotFoundException("The specified path does not exist: " + parent);
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryManagerImpl.java Wed Mar 13 16:27:43 2013
@@ -57,10 +57,10 @@ public class QueryManagerImpl implements
private final QueryEngine queryEngine;
private final HashSet<String> supportedQueryLanguages = new HashSet<String>();
- public QueryManagerImpl(SessionDelegate sessionDelegate, SessionContext sessionContext) {
- this.sessionDelegate = sessionDelegate;
+ public QueryManagerImpl(SessionContext sessionContext) {
+ this.sessionDelegate = sessionContext.getSessionDelegate();
this.sessionContext = sessionContext;
- qomFactory = new QueryObjectModelFactoryImpl(this, sessionDelegate, sessionContext);
+ qomFactory = new QueryObjectModelFactoryImpl(this, sessionContext);
queryEngine = sessionDelegate.getQueryEngine();
supportedQueryLanguages.addAll(queryEngine.getSupportedQueryLanguages());
}
@@ -122,7 +122,7 @@ public class QueryManagerImpl implements
NamePathMapper namePathMapper = sessionContext.getNamePathMapper();
Result r = queryEngine.executeQuery(statement, language, limit, offset,
bindMap, namePathMapper);
- return new QueryResultImpl(sessionDelegate, r, sessionContext);
+ return new QueryResultImpl(sessionContext, r);
} catch (IllegalArgumentException e) {
throw new InvalidQueryException(e);
} catch (ParseException e) {
@@ -141,10 +141,6 @@ public class QueryManagerImpl implements
return map;
}
- public SessionDelegate getSessionDelegate() {
- return sessionDelegate;
- }
-
void ensureIsAlive() throws RepositoryException {
// check session status
if (!sessionDelegate.isAlive()) {
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryResultImpl.java Wed Mar 13 16:27:43 2013
@@ -64,9 +64,9 @@ public class QueryResultImpl implements
final Result result;
final String pathFilter;
- public QueryResultImpl(SessionDelegate sessionDelegate, Result result, SessionContext sessionContext) {
+ public QueryResultImpl(SessionContext sessionContext, Result result) {
this.sessionContext = sessionContext;
- this.sessionDelegate = sessionDelegate;
+ this.sessionDelegate = sessionContext.getSessionDelegate();
this.result = result;
// TODO the path currently contains the workspace name
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java Wed Mar 13 16:27:43 2013
@@ -48,7 +48,6 @@ import javax.jcr.query.qom.StaticOperand
import javax.jcr.query.qom.UpperCase;
import org.apache.jackrabbit.oak.jcr.SessionContext;
-import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
import org.apache.jackrabbit.oak.jcr.query.QueryManagerImpl;
/**
@@ -56,14 +55,12 @@ import org.apache.jackrabbit.oak.jcr.que
*/
public class QueryObjectModelFactoryImpl implements QueryObjectModelFactory {
- private final QueryManagerImpl queryManager;
- private final SessionDelegate sessionDelegate;
private final SessionContext sessionContext;
+ private final QueryManagerImpl queryManager;
- public QueryObjectModelFactoryImpl(QueryManagerImpl queryManager, SessionDelegate sessionDelegate, SessionContext sessionContext) {
- this.queryManager = queryManager;
- this.sessionDelegate = sessionDelegate;
+ public QueryObjectModelFactoryImpl(QueryManagerImpl queryManager, SessionContext sessionContext) {
this.sessionContext = sessionContext;
+ this.queryManager = queryManager;
}
@Override
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java Wed Mar 13 16:27:43 2013
@@ -112,7 +112,7 @@ class VersionImpl extends NodeImpl<Versi
@Nonnull
private VersionManagerDelegate getVersionManagerDelegate() {
- return VersionManagerDelegate.create(dlg.getSessionDelegate());
+ return VersionManagerDelegate.create(sessionContext.getSessionDelegate());
}
@Nonnull
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java?rev=1456032&r1=1456031&r2=1456032&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java Wed Mar 13 16:27:43 2013
@@ -44,9 +44,9 @@ public class VersionManagerImpl implemen
private final SessionContext sessionContext;
private final VersionManagerDelegate versionManagerDelegate;
- public VersionManagerImpl(SessionDelegate sessionDelegate, SessionContext sessionContext) {
+ public VersionManagerImpl(SessionContext sessionContext) {
this.sessionContext = sessionContext;
- this.versionManagerDelegate = VersionManagerDelegate.create(sessionDelegate);
+ this.versionManagerDelegate = VersionManagerDelegate.create(sessionContext.getSessionDelegate());
}
@Override