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/13 17:30:47 UTC
svn commit: r985244 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
./ nodetype/ query/lucene/ session/ version/
Author: jukka
Date: Fri Aug 13 15:30:46 2010
New Revision: 985244
URL: http://svn.apache.org/viewvc?rev=985244&view=rev
Log:
JCR-890: concurrent read-only access to a session
Make NodeTypeManager a part of SessionContext.
Remove the session member variable from ItemImpl
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/ItemManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemSaveOperation.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/PropertyImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.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/SessionImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.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/version/VersionHistoryImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionImpl.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=985244&r1=985243&r2=985244&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 Fri Aug 13 15:30:46 2010
@@ -72,8 +72,7 @@ class AddMixinOperation implements Sessi
CHECK_LOCK | CHECK_CHECKED_OUT | CHECK_CONSTRAINTS | CHECK_HOLD,
permissions);
- NodeTypeManagerImpl ntMgr =
- context.getSessionImpl().getNodeTypeManager();
+ NodeTypeManagerImpl ntMgr = context.getNodeTypeManager();
NodeTypeImpl mixin = ntMgr.getNodeType(mixinName);
if (!mixin.isMixin()) {
throw new RepositoryException(
@@ -89,7 +88,7 @@ class AddMixinOperation implements Sessi
// build effective node type of mixin's & primary type in order
// to detect conflicts
- NodeTypeRegistry ntReg = ntMgr.getNodeTypeRegistry();
+ NodeTypeRegistry ntReg = context.getNodeTypeRegistry();
EffectiveNodeType entExisting;
try {
// existing mixin's
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=985244&r1=985243&r2=985244&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 Fri Aug 13 15:30:46 2010
@@ -56,11 +56,6 @@ public abstract class ItemImpl implement
protected final SessionContext sessionContext;
/**
- * The session to which this item is associated.
- */
- protected final SessionImpl session;
-
- /**
* Item data associated with this item.
*/
protected final ItemData data;
@@ -84,7 +79,6 @@ public abstract class ItemImpl implement
*/
ItemImpl(ItemManager itemMgr, SessionContext sessionContext, ItemData data) {
this.sessionContext = sessionContext;
- this.session = sessionContext.getSessionImpl();
this.stateMgr = sessionContext.getItemStateManager();
this.id = data.getId();
this.itemMgr = itemMgr;
@@ -411,7 +405,7 @@ public abstract class ItemImpl implement
* @return current session
*/
public Session getSession() {
- return session;
+ return sessionContext.getSessionImpl();
}
/**
@@ -427,7 +421,7 @@ public abstract class ItemImpl implement
if (otherItem instanceof ItemImpl) {
ItemImpl other = (ItemImpl) otherItem;
return id.equals(other.id)
- && session.getWorkspace().getName().equals(
+ && getSession().getWorkspace().getName().equals(
other.getSession().getWorkspace().getName());
}
return false;
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java Fri Aug 13 15:30:46 2010
@@ -117,13 +117,12 @@ public class ItemManager implements Dump
* @param sessionContext component context of the associated session
* @param rootNodeDef the definition of the root node
*/
- protected ItemManager(
- SessionContext sessionContext, NodeDefinitionImpl rootNodeDef) {
+ protected ItemManager(SessionContext sessionContext) {
this.sism = sessionContext.getItemStateManager();
this.hierMgr = sessionContext.getHierarchyManager();
this.sessionContext = sessionContext;
this.session = sessionContext.getSessionImpl();
- this.rootNodeDef = rootNodeDef;
+ this.rootNodeDef = sessionContext.getNodeTypeManager().getRootNodeDefinition();
// setup item cache with weak references to items
itemCache = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.WEAK);
@@ -200,7 +199,7 @@ public class ItemManager implements Dump
// get child node entry
ChildNodeEntry cne = parentState.getChildNodeEntry(state.getNodeId());
- NodeTypeRegistry ntReg = session.getNodeTypeManager().getNodeTypeRegistry();
+ NodeTypeRegistry ntReg = sessionContext.getNodeTypeRegistry();
try {
EffectiveNodeType ent = ntReg.getEffectiveNodeType(
parentState.getNodeTypeName(), parentState.getMixinTypeNames());
@@ -216,7 +215,7 @@ public class ItemManager implements Dump
log.warn("Fallback to nt:unstructured due to unknown child " +
"node definition for type '" + state.getNodeTypeName() + "'");
}
- return session.getNodeTypeManager().getNodeDefinition(def);
+ return sessionContext.getNodeTypeManager().getNodeDefinition(def);
} catch (NodeTypeConflictException e) {
throw new RepositoryException(e);
}
@@ -231,11 +230,11 @@ public class ItemManager implements Dump
// see also: JCR-2408
if (state.getStatus() == ItemState.STATUS_EXISTING_REMOVED
&& state.getName().equals(NameConstants.JCR_UUID)) {
- NodeTypeRegistry ntReg = session.getNodeTypeManager().getNodeTypeRegistry();
+ NodeTypeRegistry ntReg = sessionContext.getNodeTypeRegistry();
QPropertyDefinition def = ntReg.getEffectiveNodeType(
NameConstants.MIX_REFERENCEABLE).getApplicablePropertyDef(
state.getName(), state.getType());
- return session.getNodeTypeManager().getPropertyDefinition(def);
+ return sessionContext.getNodeTypeManager().getPropertyDefinition(def);
}
try {
// retrieve parent in 2 steps in order to avoid the check for
@@ -251,7 +250,7 @@ public class ItemManager implements Dump
try {
NodeState parent = (NodeState) sism.getAttic().getItemState(
state.getParentId()).getOverlayedState();
- NodeTypeRegistry ntReg = session.getNodeTypeManager().getNodeTypeRegistry();
+ NodeTypeRegistry ntReg = sessionContext.getNodeTypeRegistry();
EffectiveNodeType ent = ntReg.getEffectiveNodeType(
parent.getNodeTypeName(), parent.getMixinTypeNames());
QPropertyDefinition def;
@@ -265,7 +264,7 @@ public class ItemManager implements Dump
log.warn("Fallback to nt:unstructured due to unknown property " +
"definition for '" + state.getName() + "'");
}
- return session.getNodeTypeManager().getPropertyDefinition(def);
+ return sessionContext.getNodeTypeManager().getPropertyDefinition(def);
} catch (ItemStateException e) {
throw new RepositoryException(e);
} catch (NodeTypeConflictException e) {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemSaveOperation.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemSaveOperation.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemSaveOperation.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemSaveOperation.java Fri Aug 13 15:30:46 2010
@@ -430,7 +430,7 @@ class ItemSaveOperation implements Sessi
SessionItemStateManager stateMgr = context.getItemStateManager();
AccessManager accessMgr = context.getAccessManager();
- NodeTypeManagerImpl ntMgr = session.getNodeTypeManager();
+ NodeTypeManagerImpl ntMgr = context.getNodeTypeManager();
// walk through list of dirty transient items and validate each
for (ItemState itemState : dirty) {
ItemDefinition def;
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=985244&r1=985243&r2=985244&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 Fri Aug 13 15:30:46 2010
@@ -136,7 +136,7 @@ public class NodeImpl extends ItemImpl i
super(itemMgr, sessionContext, data);
this.data = data;
// paranoid sanity check
- NodeTypeRegistry ntReg = session.getNodeTypeManager().getNodeTypeRegistry();
+ NodeTypeRegistry ntReg = sessionContext.getNodeTypeRegistry();
final NodeState state = data.getNodeState();
if (!ntReg.isRegistered(state.getNodeTypeName())) {
/**
@@ -223,11 +223,11 @@ public class NodeImpl extends ItemImpl i
*/
private Path resolveRelativePath(String relPath) throws RepositoryException {
try {
- return session.getQPath(relPath);
+ return sessionContext.getQPath(relPath);
} catch (NameException e) {
- String msg = "failed to resolve path " + relPath + " relative to " + this;
- log.debug(msg);
- throw new RepositoryException(msg, e);
+ throw new RepositoryException(
+ "Failed to resolve path " + relPath
+ + " relative to " + this, e);
}
}
@@ -369,7 +369,7 @@ public class NodeImpl extends ItemImpl i
throws ConstraintViolationException, RepositoryException {
try {
return getOrCreateProperty(
- session.getQName(name), type,
+ sessionContext.getQName(name), type,
multiValued, exactTypeMatch, status);
} catch (NameException e) {
throw new RepositoryException("invalid property name: " + name, e);
@@ -471,8 +471,9 @@ public class NodeImpl extends ItemImpl i
propState.setType(type);
propState.setMultiValued(propDef.isMultiple());
// compute system generated values if necessary
- InternalValue[] genValues = session.getNodeTypeInstanceHandler()
- .computeSystemGeneratedPropertyValues(data.getNodeState(), propDef);
+ InternalValue[] genValues =
+ sessionContext.getSessionImpl().getNodeTypeInstanceHandler()
+ .computeSystemGeneratedPropertyValues(data.getNodeState(), propDef);
if (genValues == null) {
genValues = InternalValue.create(propDef.getDefaultValues());
}
@@ -634,7 +635,7 @@ public class NodeImpl extends ItemImpl i
protected void onRedefine(QNodeDefinition def) throws RepositoryException {
NodeDefinitionImpl newDef =
- session.getNodeTypeManager().getNodeDefinition(def);
+ sessionContext.getNodeTypeManager().getNodeDefinition(def);
// modify the state of 'this', i.e. the target node
getOrCreateTransientItemState();
// set new definition
@@ -742,9 +743,7 @@ public class NodeImpl extends ItemImpl i
*/
public EffectiveNodeType getEffectiveNodeType() throws RepositoryException {
try {
- NodeTypeRegistry registry =
- session.getNodeTypeManager().getNodeTypeRegistry();
- return registry.getEffectiveNodeType(
+ return sessionContext.getNodeTypeRegistry().getEffectiveNodeType(
data.getNodeState().getNodeTypeName(),
data.getNodeState().getMixinTypeNames());
} catch (NodeTypeConflictException ntce) {
@@ -768,9 +767,9 @@ public class NodeImpl extends ItemImpl i
protected NodeDefinitionImpl getApplicableChildNodeDefinition(Name nodeName,
Name nodeTypeName)
throws ConstraintViolationException, RepositoryException {
- NodeTypeManagerImpl ntMgr = session.getNodeTypeManager();
+ NodeTypeManagerImpl ntMgr = sessionContext.getNodeTypeManager();
QNodeDefinition cnd = getEffectiveNodeType().getApplicableChildNodeDef(
- nodeName, nodeTypeName, ntMgr.getNodeTypeRegistry());
+ nodeName, nodeTypeName, sessionContext.getNodeTypeRegistry());
return ntMgr.getNodeDefinition(cnd);
}
@@ -807,7 +806,7 @@ public class NodeImpl extends ItemImpl i
propertyName, PropertyType.UNDEFINED, multiValued);
}
}
- return session.getNodeTypeManager().getPropertyDefinition(pd);
+ return sessionContext.getNodeTypeManager().getPropertyDefinition(pd);
}
protected void makePersistent() throws InvalidItemStateException {
@@ -924,8 +923,7 @@ public class NodeImpl extends ItemImpl i
// check effective node type
try {
- NodeTypeRegistry registry =
- session.getNodeTypeManager().getNodeTypeRegistry();
+ NodeTypeRegistry registry = sessionContext.getNodeTypeRegistry();
EffectiveNodeType type =
registry.getEffectiveNodeType(primary, mixins);
return type.includesNodeType(ntName);
@@ -1214,15 +1212,15 @@ public class NodeImpl extends ItemImpl i
// Check the explicitly specified node type (if any)
NodeTypeImpl nt = null;
if (nodeTypeName != null) {
- nt = session.getNodeTypeManager().getNodeType(nodeTypeName);
+ nt = sessionContext.getNodeTypeManager().getNodeType(nodeTypeName);
if (nt.isMixin()) {
throw new ConstraintViolationException(
"Unable to add a node with a mixin node type: "
- + session.getJCRName(nodeTypeName));
+ + sessionContext.getJCRName(nodeTypeName));
} else if (nt.isAbstract()) {
throw new ConstraintViolationException(
"Unable to add a node with an abstract node type: "
- + session.getJCRName(nodeTypeName));
+ + sessionContext.getJCRName(nodeTypeName));
} else {
// adding a node with explicit specifying the node type name
// requires the editing session to have nt_management privilege.
@@ -1238,7 +1236,7 @@ public class NodeImpl extends ItemImpl i
} catch (RepositoryException e) {
throw new ConstraintViolationException(
"No child node definition for "
- + session.getJCRName(nodeName) + " found in " + this, e);
+ + sessionContext.getJCRName(nodeName) + " found in " + this, e);
}
// Use default node type from child node definition if needed
@@ -1372,7 +1370,7 @@ public class NodeImpl extends ItemImpl i
String name;
try {
Path.Element[] path = new Path.Element[] { srcName };
- name = session.getJCRPath(new PathBuilder(path).getPath());
+ name = sessionContext.getJCRPath(new PathBuilder(path).getPath());
} catch (NameException e) {
name = srcName.toString();
} catch (NamespaceException e) {
@@ -1386,7 +1384,7 @@ public class NodeImpl extends ItemImpl i
String name;
try {
Path.Element[] path = new Path.Element[] { dstName };
- name = session.getJCRPath(new PathBuilder(path).getPath());
+ name = sessionContext.getJCRPath(new PathBuilder(path).getPath());
} catch (NameException e) {
name = dstName.toString();
} catch (NamespaceException e) {
@@ -1413,7 +1411,7 @@ public class NodeImpl extends ItemImpl i
pb.addLast(srcName.getName(), srcName.getIndex());
Path childPath = pb.getPath();
if (!acMgr.isGranted(childPath, Permission.ADD_NODE | Permission.REMOVE_NODE)) {
- String msg = "Not allowed to reorder child node " + session.getJCRPath(childPath) + ".";
+ String msg = "Not allowed to reorder child node " + sessionContext.getJCRPath(childPath) + ".";
log.debug(msg);
throw new AccessDeniedException(msg);
}
@@ -1750,7 +1748,7 @@ public class NodeImpl extends ItemImpl i
Path.Element insertName;
try {
- Path p = session.getQPath(srcName);
+ Path p = sessionContext.getQPath(srcName);
// p must be a relative path of length==depth==1 (to eliminate e.g. "..")
if (p.isAbsolute() || p.getLength() != 1 || p.getDepth() != 1) {
throw new RepositoryException("invalid name: " + srcName);
@@ -1765,7 +1763,7 @@ public class NodeImpl extends ItemImpl i
Path.Element beforeName;
if (destName != null) {
try {
- Path p = session.getQPath(destName);
+ Path p = sessionContext.getQPath(destName);
// p must be a relative path of length==depth==1 (to eliminate e.g. "..")
if (p.isAbsolute() || p.getLength() != 1 || p.getDepth() != 1) {
throw new RepositoryException("invalid name: " + destName);
@@ -1806,7 +1804,7 @@ public class NodeImpl extends ItemImpl i
public Property setProperty(String name, String[] values, int type)
throws RepositoryException {
Value[] converted = getValues(values, type);
- return setProperty(session.getQName(name), converted, type, true);
+ return setProperty(sessionContext.getQName(name), converted, type, true);
}
/** Wrapper around {@link #setProperty(String, Value)} */
@@ -1837,14 +1835,14 @@ public class NodeImpl extends ItemImpl i
value = ValueHelper.convert(value, type, getValueFactory());
}
return sessionContext.getSessionState().perform(
- new SetPropertyOperation(session.getQName(name), value, true));
+ new SetPropertyOperation(sessionContext.getQName(name), value, true));
}
/** Wrapper around {@link SetPropertyOperation} */
public Property setProperty(String name, Value value)
throws RepositoryException {
return sessionContext.getSessionState().perform(
- new SetPropertyOperation(session.getQName(name), value, false));
+ new SetPropertyOperation(sessionContext.getQName(name), value, false));
}
/** Wrapper around {@link #setProperty(String, Value)} */
@@ -2209,7 +2207,7 @@ public class NodeImpl extends ItemImpl i
*/
public boolean isNodeType(String nodeTypeName) throws RepositoryException {
try {
- return isNodeType(session.getQName(nodeTypeName));
+ return isNodeType(sessionContext.getQName(nodeTypeName));
} catch (NameException e) {
throw new RepositoryException(
"invalid node type name: " + nodeTypeName, e);
@@ -2223,7 +2221,7 @@ public class NodeImpl extends ItemImpl i
// check state of this instance
sanityCheck();
- return session.getNodeTypeManager().getNodeType(
+ return sessionContext.getNodeTypeManager().getNodeType(
data.getNodeState().getNodeTypeName());
}
@@ -2242,7 +2240,7 @@ public class NodeImpl extends ItemImpl i
Iterator<Name> iter = mixinNames.iterator();
int i = 0;
while (iter.hasNext()) {
- nta[i++] = session.getNodeTypeManager().getNodeType(iter.next());
+ nta[i++] = sessionContext.getNodeTypeManager().getNodeType(iter.next());
}
return nta;
}
@@ -2250,7 +2248,7 @@ public class NodeImpl extends ItemImpl i
/** Wrapper around {@link #addMixin(Name)}. */
public void addMixin(String mixinName) throws RepositoryException {
try {
- addMixin(session.getQName(mixinName));
+ addMixin(sessionContext.getQName(mixinName));
} catch (NameException e) {
throw new RepositoryException(
"Invalid mixin type name: " + mixinName, e);
@@ -2260,7 +2258,7 @@ public class NodeImpl extends ItemImpl i
/** Wrapper around {@link #removeMixin(Name)}. */
public void removeMixin(String mixinName) throws RepositoryException {
try {
- removeMixin(session.getQName(mixinName));
+ removeMixin(sessionContext.getQName(mixinName));
} catch (NameException e) {
throw new RepositoryException(
"Invalid mixin type name: " + mixinName, e);
@@ -2275,8 +2273,8 @@ public class NodeImpl extends ItemImpl i
// check state of this instance
sanityCheck();
- Name ntName = session.getQName(mixinName);
- NodeTypeManagerImpl ntMgr = session.getNodeTypeManager();
+ Name ntName = sessionContext.getQName(mixinName);
+ NodeTypeManagerImpl ntMgr = sessionContext.getNodeTypeManager();
NodeTypeImpl mixin = ntMgr.getNodeType(ntName);
if (!mixin.isMixin()) {
return false;
@@ -2433,8 +2431,9 @@ public class NodeImpl extends ItemImpl i
try {
// create session on other workspace for current subject
// (may throw NoSuchWorkspaceException and AccessDeniedException)
- RepositoryImpl rep = (RepositoryImpl) session.getRepository();
- srcSession = rep.createSession(session.getSubject(), workspaceName);
+ RepositoryImpl rep = (RepositoryImpl) getSession().getRepository();
+ srcSession = rep.createSession(
+ sessionContext.getSessionImpl().getSubject(), workspaceName);
// search nearest ancestor that is referenceable
NodeImpl m1 = this;
@@ -2464,7 +2463,7 @@ public class NodeImpl extends ItemImpl i
try {
Path p = m1.getPrimaryPath().computeRelativePath(getPrimaryPath());
// use prefix mappings of srcSession
- relPath = session.getJCRPath(p);
+ relPath = sessionContext.getJCRPath(p);
} catch (NameException be) {
// should never get here...
String msg = "internal error: failed to determine relative path";
@@ -2758,7 +2757,7 @@ public class NodeImpl extends ItemImpl i
* Returns the version manager of this workspace.
*/
private VersionManagerImpl getVersionManagerImpl() {
- return session.getWorkspaceImpl().getVersionManagerImpl();
+ return sessionContext.getSessionImpl().getWorkspaceImpl().getVersionManagerImpl();
}
/**
@@ -2890,7 +2889,7 @@ public class NodeImpl extends ItemImpl i
RepositoryException {
// check state of this instance
sanityCheck();
- LockManager lockMgr = session.getWorkspace().getLockManager();
+ LockManager lockMgr = getSession().getWorkspace().getLockManager();
return lockMgr.lock(getPath(), isDeep, isSessionScoped, Long.MAX_VALUE, null);
}
@@ -2902,7 +2901,7 @@ public class NodeImpl extends ItemImpl i
AccessDeniedException, RepositoryException {
// check state of this instance
sanityCheck();
- LockManager lockMgr = session.getWorkspace().getLockManager();
+ LockManager lockMgr = getSession().getWorkspace().getLockManager();
return lockMgr.getLock(getPath());
}
@@ -2915,7 +2914,7 @@ public class NodeImpl extends ItemImpl i
RepositoryException {
// check state of this instance
sanityCheck();
- LockManager lockMgr = session.getWorkspace().getLockManager();
+ LockManager lockMgr = getSession().getWorkspace().getLockManager();
lockMgr.unlock(getPath());
}
@@ -2925,7 +2924,7 @@ public class NodeImpl extends ItemImpl i
public boolean holdsLock() throws RepositoryException {
// check state of this instance
sanityCheck();
- LockManager lockMgr = session.getWorkspace().getLockManager();
+ LockManager lockMgr = getSession().getWorkspace().getLockManager();
return lockMgr.holdsLock(getPath());
}
@@ -2935,7 +2934,7 @@ public class NodeImpl extends ItemImpl i
public boolean isLocked() throws RepositoryException {
// check state of this instance
sanityCheck();
- LockManager lockMgr = session.getWorkspace().getLockManager();
+ LockManager lockMgr = getSession().getWorkspace().getLockManager();
return lockMgr.isLocked(getPath());
}
@@ -2951,7 +2950,7 @@ public class NodeImpl extends ItemImpl i
// a new node needs no check
return;
}
- session.getLockManager().checkLock(this);
+ sessionContext.getSessionImpl().getLockManager().checkLock(this);
}
//--------------------------------------------------< new JSR 283 methods >
@@ -2978,7 +2977,7 @@ public class NodeImpl extends ItemImpl i
if (name != null) {
Name qName;
try {
- qName = session.getQName(name);
+ qName = sessionContext.getQName(name);
} catch (NameException e) {
throw new RepositoryException("invalid property name: " + name, e);
}
@@ -3016,7 +3015,7 @@ public class NodeImpl extends ItemImpl i
Value ref = getSession().getValueFactory().createValue(this, true);
List<Property> props = new ArrayList<Property>();
- QueryManagerImpl qm = (QueryManagerImpl) session.getWorkspace().getQueryManager();
+ QueryManagerImpl qm = (QueryManagerImpl) getSession().getWorkspace().getQueryManager();
for (Node n : qm.getWeaklyReferringNodes(this)) {
for (PropertyIterator it = n.getProperties(); it.hasNext(); ) {
Property p = it.nextProperty();
@@ -3056,7 +3055,7 @@ public class NodeImpl extends ItemImpl i
StringBuilder stmt = new StringBuilder();
stmt.append("//*[@").append(ISO9075.encode(name));
stmt.append(" = '").append(data.getId()).append("']");
- Query q = session.getWorkspace().getQueryManager().createQuery(
+ Query q = getSession().getWorkspace().getQueryManager().createQuery(
stmt.toString(), Query.XPATH);
QueryResult result = q.execute();
ArrayList<Property> l = new ArrayList<Property>();
@@ -3120,13 +3119,13 @@ public class NodeImpl extends ItemImpl i
throw new RepositoryException(msg);
}
- Name ntName = session.getQName(nodeTypeName);
+ Name ntName = sessionContext.getQName(nodeTypeName);
if (ntName.equals(state.getNodeTypeName())) {
log.debug("Node already has " + nodeTypeName + " as primary node type.");
return;
}
- NodeTypeManagerImpl ntMgr = session.getNodeTypeManager();
+ NodeTypeManagerImpl ntMgr = sessionContext.getNodeTypeManager();
NodeType nt = ntMgr.getNodeType(ntName);
if (nt.isMixin()) {
throw new ConstraintViolationException(nodeTypeName + ": not a primary node type.");
@@ -3226,7 +3225,7 @@ public class NodeImpl extends ItemImpl i
ValueHelper.convert(
prop.getValues(),
pdi.getRequiredType(),
- session.getValueFactory());
+ getSession().getValueFactory());
// redefine property
prop.onRedefine(pdi.unwrap());
// set converted values
@@ -3237,7 +3236,7 @@ public class NodeImpl extends ItemImpl i
ValueHelper.convert(
prop.getValue(),
pdi.getRequiredType(),
- session.getValueFactory());
+ getSession().getValueFactory());
// redefine property
prop.onRedefine(pdi.unwrap());
// set converted values
@@ -3325,7 +3324,7 @@ public class NodeImpl extends ItemImpl i
ConstraintViolationException, RepositoryException {
Value v = null;
if (value != null) {
- v = session.getValueFactory().createValue(value);
+ v = getSession().getValueFactory().createValue(value);
}
return setProperty(name, v);
}
@@ -3338,7 +3337,7 @@ public class NodeImpl extends ItemImpl i
ConstraintViolationException, RepositoryException {
Value v = null;
if (value != null) {
- v = session.getValueFactory().createValue(value);
+ v = getSession().getValueFactory().createValue(value);
}
return setProperty(name, v);
}
@@ -3468,7 +3467,7 @@ public class NodeImpl extends ItemImpl i
Name qName;
try {
- qName = session.getQName(newName);
+ qName = sessionContext.getQName(newName);
} catch (NameException e) {
throw new RepositoryException("invalid node name: " + newName, e);
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java Fri Aug 13 15:30:46 2010
@@ -44,6 +44,7 @@ import javax.jcr.PathNotFoundException;
import javax.jcr.Property;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
+import javax.jcr.Session;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import javax.jcr.ValueFormatException;
@@ -204,7 +205,7 @@ public class PropertyImpl extends ItemIm
protected void onRedefine(QPropertyDefinition def) throws RepositoryException {
PropertyDefinitionImpl newDef =
- session.getNodeTypeManager().getPropertyDefinition(def);
+ sessionContext.getNodeTypeManager().getPropertyDefinition(def);
data.setDefinition(newDef);
}
@@ -222,7 +223,7 @@ public class PropertyImpl extends ItemIm
switch (value.getType()) {
case NAME:
case PATH:
- String str = ValueFormat.getJCRString(value, session);
+ String str = ValueFormat.getJCRString(value, sessionContext);
length = str.length();
break;
default:
@@ -364,10 +365,10 @@ public class PropertyImpl extends ItemIm
if (reqType != NAME) {
// type conversion required
Value targetValue = ValueHelper.convert(
- ValueFormat.getJCRValue(InternalValue.create(name), session, session.getValueFactory()),
- reqType, session.getValueFactory());
+ ValueFormat.getJCRValue(InternalValue.create(name), sessionContext, getSession().getValueFactory()),
+ reqType, getSession().getValueFactory());
internalValue = InternalValue.create(
- targetValue, session, sessionContext.getDataStore());
+ targetValue, sessionContext, sessionContext.getDataStore());
} else {
// no type conversion required
internalValue = InternalValue.create(name);
@@ -416,10 +417,10 @@ public class PropertyImpl extends ItemIm
if (reqType != NAME) {
// type conversion required
Value targetValue = ValueHelper.convert(
- ValueFormat.getJCRValue(InternalValue.create(name), session, session.getValueFactory()),
- reqType, session.getValueFactory());
+ ValueFormat.getJCRValue(InternalValue.create(name), sessionContext, getSession().getValueFactory()),
+ reqType, getSession().getValueFactory());
internalValue = InternalValue.create(
- targetValue, session,
+ targetValue, sessionContext,
sessionContext.getDataStore());
} else {
// no type conversion required
@@ -488,14 +489,14 @@ public class PropertyImpl extends ItemIm
InternalValue[] internals = internalGetValues();
Value[] values = new Value[internals.length];
for (int i = 0; i < internals.length; i++) {
- values[i] = ValueFormat.getJCRValue(internals[i], session, session.getValueFactory());
+ values[i] = ValueFormat.getJCRValue(internals[i], sessionContext, getSession().getValueFactory());
}
return values;
}
public Value getValue() throws RepositoryException {
try {
- return ValueFormat.getJCRValue(internalGetValue(), session, session.getValueFactory());
+ return ValueFormat.getJCRValue(internalGetValue(), sessionContext, getSession().getValueFactory());
} catch (RuntimeException e) {
String msg = "Internal error while retrieving value of " + this;
log.error(msg, e);
@@ -541,6 +542,7 @@ public class PropertyImpl extends ItemIm
}
public Node getNode() throws ValueFormatException, RepositoryException {
+ Session session = getSession();
Value value = getValue();
int type = value.getType();
switch (type) {
@@ -551,7 +553,7 @@ public class PropertyImpl extends ItemIm
case PATH:
case NAME:
String path = value.getString();
- Path p = session.getQPath(path);
+ Path p = sessionContext.getQPath(path);
boolean absolute = p.isAbsolute();
try {
return (absolute) ? session.getNode(path) : getParent().getNode(path);
@@ -566,7 +568,7 @@ public class PropertyImpl extends ItemIm
} catch (RepositoryException e) {
// try if STRING value can be interpreted as PATH value
Value pathValue = ValueHelper.convert(value, PATH, session.getValueFactory());
- p = session.getQPath(pathValue.getString());
+ p = sessionContext.getQPath(pathValue.getString());
absolute = p.isAbsolute();
try {
return (absolute) ? session.getNode(pathValue.getString()) : getParent().getNode(pathValue.getString());
@@ -582,17 +584,17 @@ public class PropertyImpl extends ItemIm
public Property getProperty() throws RepositoryException {
Value value = getValue();
- Value pathValue = ValueHelper.convert(value, PATH, session.getValueFactory());
+ Value pathValue = ValueHelper.convert(value, PATH, getSession().getValueFactory());
String path = pathValue.getString();
boolean absolute;
try {
- Path p = session.getQPath(path);
+ Path p = sessionContext.getQPath(path);
absolute = p.isAbsolute();
} catch (RepositoryException e) {
throw new ValueFormatException("Property value cannot be converted to a PATH");
}
try {
- return (absolute) ? session.getProperty(path) : getParent().getProperty(path);
+ return (absolute) ? getSession().getProperty(path) : getParent().getProperty(path);
} catch (PathNotFoundException e) {
throw new ItemNotFoundException(path);
}
@@ -630,7 +632,7 @@ public class PropertyImpl extends ItemIm
public void setValue(Calendar value) throws RepositoryException {
if (value != null) {
try {
- setValue(session.getValueFactory().createValue(value));
+ setValue(getSession().getValueFactory().createValue(value));
} catch (IllegalArgumentException e) {
throw new ValueFormatException(
"Value is not an ISO8601 date: " + value, e);
@@ -731,13 +733,13 @@ public class PropertyImpl extends ItemIm
if (reqType != value.getType()) {
// type conversion required
Value targetVal = ValueHelper.convert(
- value, reqType, session.getValueFactory());
+ value, reqType, getSession().getValueFactory());
internalValue = InternalValue.create(
- targetVal, session, sessionContext.getDataStore());
+ targetVal, sessionContext, sessionContext.getDataStore());
} else {
// no type conversion required
internalValue = InternalValue.create(
- value, session, sessionContext.getDataStore());
+ value, sessionContext, sessionContext.getDataStore());
}
internalSetValue(new InternalValue[]{internalValue}, reqType);
}
@@ -801,10 +803,10 @@ public class PropertyImpl extends ItemIm
}
if (reqType != value.getType()) {
value = ValueHelper.convert(
- value, reqType, session.getValueFactory());
+ value, reqType, getSession().getValueFactory());
}
internalValues[i] = InternalValue.create(
- value, session, sessionContext.getDataStore());
+ value, sessionContext, sessionContext.getDataStore());
} else {
internalValues[i] = null;
}
@@ -874,7 +876,7 @@ public class PropertyImpl extends ItemIm
public String getName() throws RepositoryException {
// check state of this instance
sanityCheck();
- return session.getJCRName(((PropertyId) id).getName());
+ return sessionContext.getJCRName(((PropertyId) id).getName());
}
/**
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.java Fri Aug 13 15:30:46 2010
@@ -72,7 +72,7 @@ public abstract class ProtectedItemModif
// validation: make sure Node is not locked or checked-in.
parentImpl.checkSetProperty();
- NodeTypeImpl nodeType = parentImpl.session.getNodeTypeManager().getNodeType(ntName);
+ NodeTypeImpl nodeType = parentImpl.sessionContext.getNodeTypeManager().getNodeType(ntName);
org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl def = parentImpl.getApplicableChildNodeDefinition(name, ntName);
// check for name collisions
@@ -87,7 +87,7 @@ public abstract class ProtectedItemModif
}
// check same-name sibling setting of existing node
NodeId newId = cne.getId();
- NodeImpl n = (NodeImpl) parentImpl.session.getItemManager().getItem(newId);
+ NodeImpl n = (NodeImpl) parentImpl.sessionContext.getItemManager().getItem(newId);
if (!n.getDefinition().allowsSameNameSiblings()) {
throw new ItemExistsException();
}
@@ -106,7 +106,7 @@ public abstract class ProtectedItemModif
}
// validation: make sure Node is not locked or checked-in.
parentImpl.checkSetProperty();
- InternalValue intVs = InternalValue.create(value, parentImpl.session);
+ InternalValue intVs = InternalValue.create(value, parentImpl.sessionContext);
return parentImpl.internalSetProperty(name, intVs);
}
@@ -116,7 +116,7 @@ public abstract class ProtectedItemModif
parentImpl.checkSetProperty();
InternalValue[] intVs = new InternalValue[values.length];
for (int i = 0; i < values.length; i++) {
- intVs[i] = InternalValue.create(values[i], parentImpl.session);
+ intVs[i] = InternalValue.create(values[i], parentImpl.sessionContext);
}
return parentImpl.internalSetProperty(name, intVs);
}
@@ -127,7 +127,7 @@ public abstract class ProtectedItemModif
parentImpl.checkSetProperty();
InternalValue[] intVs = new InternalValue[values.length];
for (int i = 0; i < values.length; i++) {
- intVs[i] = InternalValue.create(values[i], parentImpl.session);
+ intVs[i] = InternalValue.create(values[i], parentImpl.sessionContext);
}
return parentImpl.internalSetProperty(name, intVs, type);
}
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=985244&r1=985243&r2=985244&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 Fri Aug 13 15:30:46 2010
@@ -89,8 +89,8 @@ class RemoveMixinOperation implements Se
+ " not included in " + node);
}
- NodeTypeManagerImpl ntMgr = session.getNodeTypeManager();
- NodeTypeRegistry ntReg = ntMgr.getNodeTypeRegistry();
+ NodeTypeManagerImpl ntMgr = context.getNodeTypeManager();
+ NodeTypeRegistry ntReg = context.getNodeTypeRegistry();
// build effective node type of remaining mixin's & primary type
Set<Name> remainingMixins = new HashSet<Name>(state.getMixinTypeNames());
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java Fri Aug 13 15:30:46 2010
@@ -160,11 +160,6 @@ public class SessionImpl extends Abstrac
new HashMap<String, Object>();
/**
- * the node type manager
- */
- protected final NodeTypeManagerImpl ntMgr;
-
- /**
* the Workspace associated with this session
*/
protected final WorkspaceImpl wsp;
@@ -256,9 +251,6 @@ public class SessionImpl extends Abstrac
userId = retrieveUserId(subject, wspConfig.getName());
namePathResolver = new DefaultNamePathResolver(this, this, true);
- ntMgr = new NodeTypeManagerImpl(
- repositoryContext.getNodeTypeRegistry(), this,
- repositoryContext.getDataStore());
wsp = createWorkspaceInstance(wspConfig);
context.setItemStateManager(createSessionItemStateManager());
context.setItemManager(createItemManager());
@@ -313,8 +305,7 @@ public class SessionImpl extends Abstrac
* @return item manager
*/
protected ItemManager createItemManager() {
- ItemManager mgr =
- new ItemManager(context, ntMgr.getRootNodeDefinition());
+ ItemManager mgr = new ItemManager(context);
context.getItemStateManager().addListener(mgr);
return mgr;
}
@@ -432,7 +423,7 @@ public class SessionImpl extends Abstrac
* @return the <code>NodeTypeManager</code>
*/
public NodeTypeManagerImpl getNodeTypeManager() {
- return ntMgr;
+ return context.getNodeTypeManager();
}
/**
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java Fri Aug 13 15:30:46 2010
@@ -564,7 +564,7 @@ public class WorkspaceImpl extends Abstr
// check state of this instance
sanityCheck();
- return session.getNodeTypeManager();
+ return sessionContext.getNodeTypeManager();
}
/**
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java Fri Aug 13 15:30:46 2010
@@ -122,12 +122,10 @@ public class NodeTypeManagerImpl extends
* @param ntReg node type registry
* @param session current session
* @param store the data store
- * @throws RepositoryException If an error occurs.
*/
@SuppressWarnings("unchecked")
public NodeTypeManagerImpl(
- NodeTypeRegistry ntReg, SessionImpl session, DataStore store)
- throws RepositoryException {
+ NodeTypeRegistry ntReg, SessionImpl session, DataStore store) {
this.ntReg = ntReg;
this.session = session;
this.valueFactory = session.getValueFactory();
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java Fri Aug 13 15:30:46 2010
@@ -113,10 +113,10 @@ public class QueryObjectModelImpl extend
List<ColumnImpl> columns = new ArrayList<ColumnImpl>();
// expand columns without name
+ NodeTypeManagerImpl ntMgr = sessionContext.getNodeTypeManager();
for (ColumnImpl column : qomTree.getColumns()) {
if (column.getColumnName() == null) {
QueryObjectModelFactory qomFactory = getQOMFactory();
- NodeTypeManagerImpl ntMgr = session.getNodeTypeManager();
SelectorImpl selector = qomTree.getSelector(column.getSelectorQName());
NodeTypeImpl nt = ntMgr.getNodeType(selector.getNodeTypeQName());
for (PropertyDefinition pd : nt.getPropertyDefinitions()) {
@@ -168,7 +168,7 @@ public class QueryObjectModelImpl extend
private void checkNodeTypes() throws InvalidQueryException {
try {
final NodeTypeManagerImpl manager =
- sessionContext.getSessionImpl().getNodeTypeManager();
+ sessionContext.getNodeTypeManager();
qomTree.accept(new DefaultTraversingQOMTreeVisitor() {
public Object visit(SelectorImpl node, Object data) throws Exception {
String ntName = node.getNodeTypeName();
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=985244&r1=985243&r2=985244&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 Fri Aug 13 15:30:46 2010
@@ -25,6 +25,8 @@ import org.apache.jackrabbit.core.Reposi
import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.core.data.DataStore;
import org.apache.jackrabbit.core.id.NodeId;
+import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
import org.apache.jackrabbit.core.observation.ObservationManagerImpl;
import org.apache.jackrabbit.core.security.AccessManager;
import org.apache.jackrabbit.core.state.SessionItemStateManager;
@@ -56,6 +58,11 @@ public class SessionContext implements N
private final SessionState state;
/**
+ * Node type manager of this session
+ */
+ private final NodeTypeManagerImpl nodeTypeManager;
+
+ /**
* The item state manager of this session
*/
private volatile SessionItemStateManager itemStateManager;
@@ -93,6 +100,9 @@ public class SessionContext implements N
this.repositoryContext = repositoryContext;
this.session = session;
this.state = new SessionState(this);
+ this.nodeTypeManager = new NodeTypeManagerImpl(
+ repositoryContext.getNodeTypeRegistry(), session,
+ repositoryContext.getDataStore());
}
/**
@@ -124,6 +134,15 @@ public class SessionContext implements N
}
/**
+ * Returns the node type registry of this repository.
+ *
+ * @return node type registry
+ */
+ public NodeTypeRegistry getNodeTypeRegistry() {
+ return repositoryContext.getNodeTypeRegistry();
+ }
+
+ /**
* Returns this session.
*
* @return session
@@ -141,6 +160,15 @@ public class SessionContext implements N
return state;
}
+ /**
+ * Returns the node type manager of this session.
+ *
+ * @return node type manager
+ */
+ public NodeTypeManagerImpl getNodeTypeManager() {
+ return nodeTypeManager;
+ }
+
public SessionItemStateManager getItemStateManager() {
assert itemStateManager != null;
return itemStateManager;
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionHistoryImpl.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionHistoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionHistoryImpl.java Fri Aug 13 15:30:46 2010
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.core.versi
import org.apache.jackrabbit.core.AbstractNodeData;
import org.apache.jackrabbit.core.ItemManager;
+import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.NodeImpl;
import org.apache.jackrabbit.core.security.authorization.Permission;
@@ -73,6 +74,7 @@ public class VersionHistoryImpl extends
*/
protected InternalVersionHistory getInternalVersionHistory()
throws RepositoryException {
+ SessionImpl session = sessionContext.getSessionImpl();
InternalVersionHistory history =
session.getInternalVersionManager().getVersionHistory((NodeId) id);
if (history == null) {
@@ -85,6 +87,7 @@ public class VersionHistoryImpl extends
* @see javax.jcr.version.VersionHistory#getRootVersion()
*/
public javax.jcr.version.Version getRootVersion() throws RepositoryException {
+ SessionImpl session = sessionContext.getSessionImpl();
return (Version) session.getNodeById(
getInternalVersionHistory().getRootVersion().getId());
}
@@ -93,8 +96,8 @@ public class VersionHistoryImpl extends
* @see javax.jcr.version.VersionHistory#getAllVersions()
*/
public VersionIterator getAllVersions() throws RepositoryException {
- return new VersionIteratorImpl(session,
- getInternalVersionHistory().getRootVersion());
+ return new VersionIteratorImpl(
+ getSession(), getInternalVersionHistory().getRootVersion());
}
/**
@@ -107,13 +110,15 @@ public class VersionHistoryImpl extends
/**
* @see VersionHistory#getAllLinearVersions()
*/
+ @SuppressWarnings("deprecation")
public VersionIterator getAllLinearVersions() throws RepositoryException {
// get base version. this can certainly be optimized
+ SessionImpl session = sessionContext.getSessionImpl();
InternalVersionHistory vh = getInternalVersionHistory();
Node vn = session.getNodeById(vh.getVersionableId());
InternalVersion base = ((VersionImpl) vn.getBaseVersion()).getInternalVersion();
- return new VersionIteratorImpl(session, vh.getRootVersion(), base);
+ return new VersionIteratorImpl(getSession(), vh.getRootVersion(), base);
}
/**
@@ -129,12 +134,12 @@ public class VersionHistoryImpl extends
public javax.jcr.version.Version getVersion(String versionName)
throws VersionException, RepositoryException {
try {
- Name name = session.getQName(versionName);
+ Name name = sessionContext.getQName(versionName);
InternalVersion v = getInternalVersionHistory().getVersion(name);
if (v == null) {
throw new VersionException("No version with name '" + versionName + "' exists in this version history.");
}
- return (Version) session.getNodeById(v.getId());
+ return (Version) sessionContext.getSessionImpl().getNodeById(v.getId());
} catch (NameException e) {
throw new VersionException(e);
}
@@ -145,13 +150,13 @@ public class VersionHistoryImpl extends
*/
public javax.jcr.version.Version getVersionByLabel(String label) throws RepositoryException {
try {
- Name qLabel = session.getQName(label);
+ Name qLabel = sessionContext.getQName(label);
InternalVersion v =
getInternalVersionHistory().getVersionByLabel(qLabel);
if (v == null) {
throw new VersionException("No version with label '" + label + "' exists in this version history.");
}
- return (Version) session.getNodeById(v.getId());
+ return (Version) sessionContext.getSessionImpl().getNodeById(v.getId());
} catch (NameException e) {
throw new VersionException(e);
}
@@ -165,9 +170,10 @@ public class VersionHistoryImpl extends
try {
// check permissions
checkVersionManagementPermission();
- session.getInternalVersionManager().setVersionLabel(
- session, getInternalVersionHistory(), session.getQName(versionName),
- session.getQName(label), move);
+ sessionContext.getSessionImpl().getInternalVersionManager().setVersionLabel(
+ getSession(), getInternalVersionHistory(),
+ sessionContext.getQName(versionName),
+ sessionContext.getQName(label), move);
} catch (NameException e) {
throw new VersionException(e);
}
@@ -180,8 +186,9 @@ public class VersionHistoryImpl extends
try {
// check permissions
checkVersionManagementPermission();
- InternalVersion existing = session.getInternalVersionManager().setVersionLabel(
- session, getInternalVersionHistory(), null, session.getQName(label), true);
+ InternalVersion existing = sessionContext.getSessionImpl().getInternalVersionManager().setVersionLabel(
+ getSession(), getInternalVersionHistory(),
+ null, sessionContext.getQName(label), true);
if (existing == null) {
throw new VersionException("No version with label '" + label + "' exists in this version history.");
}
@@ -198,7 +205,7 @@ public class VersionHistoryImpl extends
Name[] labels = getInternalVersionHistory().getVersionLabels();
String[] ret = new String[labels.length];
for (int i = 0; i < labels.length; i++) {
- ret[i] = session.getJCRName(labels[i]);
+ ret[i] = sessionContext.getJCRName(labels[i]);
}
return ret;
}
@@ -212,7 +219,7 @@ public class VersionHistoryImpl extends
Name[] labels = ((VersionImpl) version).getInternalVersion().getLabels();
String[] ret = new String[labels.length];
for (int i = 0; i < labels.length; i++) {
- ret[i] = session.getJCRName(labels[i]);
+ ret[i] = sessionContext.getJCRName(labels[i]);
}
return ret;
}
@@ -222,7 +229,7 @@ public class VersionHistoryImpl extends
*/
public boolean hasVersionLabel(String label) throws RepositoryException {
try {
- Name qLabel = session.getQName(label);
+ Name qLabel = sessionContext.getQName(label);
return getInternalVersionHistory().getVersionByLabel(qLabel) != null;
} catch (NameException e) {
throw new IllegalArgumentException("Unable to resolve label: " + e);
@@ -236,7 +243,7 @@ public class VersionHistoryImpl extends
throws VersionException, RepositoryException {
checkOwnVersion(version);
try {
- Name qLabel = session.getQName(label);
+ Name qLabel = sessionContext.getQName(label);
return ((VersionImpl) version).getInternalVersion().hasLabel(qLabel);
} catch (NameException e) {
throw new VersionException(e);
@@ -252,8 +259,10 @@ public class VersionHistoryImpl extends
try {
// check permissions
checkVersionManagementPermission();
- session.getInternalVersionManager().removeVersion(session,
- getInternalVersionHistory(), session.getQName(versionName));
+ sessionContext.getSessionImpl().getInternalVersionManager().removeVersion(
+ getSession(),
+ getInternalVersionHistory(),
+ sessionContext.getQName(versionName));
} catch (NameException e) {
throw new RepositoryException(e);
}
@@ -298,7 +307,7 @@ public class VersionHistoryImpl extends
*/
private void checkVersionManagementPermission() throws RepositoryException {
try {
- session.getAccessManager().checkPermission(getPrimaryPath(), Permission.VERSION_MNGMT);
+ sessionContext.getAccessManager().checkPermission(getPrimaryPath(), Permission.VERSION_MNGMT);
} catch (ItemNotFoundException e) {
// ignore.
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionImpl.java?rev=985244&r1=985243&r2=985244&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionImpl.java Fri Aug 13 15:30:46 2010
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.core.versi
import org.apache.jackrabbit.core.ItemManager;
import org.apache.jackrabbit.core.AbstractNodeData;
+import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.session.SessionContext;
import org.apache.jackrabbit.core.NodeImpl;
@@ -62,6 +63,7 @@ public class VersionImpl extends NodeImp
* @throws RepositoryException if the internal version is not available
*/
protected InternalVersion getInternalVersion() throws RepositoryException {
+ SessionImpl session = sessionContext.getSessionImpl();
InternalVersion version =
session.getInternalVersionManager().getVersion((NodeId) id);
if (version == null) {
@@ -85,7 +87,7 @@ public class VersionImpl extends NodeImp
InternalVersion[] suc = getInternalVersion().getSuccessors();
Version[] ret = new Version[suc.length];
for (int i = 0; i < suc.length; i++) {
- ret[i] = (Version) session.getNodeById(suc[i].getId());
+ ret[i] = (Version) sessionContext.getSessionImpl().getNodeById(suc[i].getId());
}
return ret;
}
@@ -98,7 +100,7 @@ public class VersionImpl extends NodeImp
InternalVersion[] pred = getInternalVersion().getPredecessors();
Version[] ret = new Version[pred.length];
for (int i = 0; i < pred.length; i++) {
- ret[i] = (Version) session.getNodeById(pred[i].getId());
+ ret[i] = (Version) sessionContext.getSessionImpl().getNodeById(pred[i].getId());
}
return ret;
}
@@ -108,6 +110,7 @@ public class VersionImpl extends NodeImp
*/
public Version getLinearSuccessor() throws RepositoryException {
// get base version. this can certainly be optimized
+ SessionImpl session = sessionContext.getSessionImpl();
InternalVersionHistory vh = ((VersionHistoryImpl) getContainingHistory())
.getInternalVersionHistory();
Node vn = session.getNodeById(vh.getVersionableId());
@@ -122,7 +125,7 @@ public class VersionImpl extends NodeImp
*/
public javax.jcr.version.Version getLinearPredecessor() throws RepositoryException {
InternalVersion pred = getInternalVersion().getLinearPredecessor();
- return (Version) session.getNodeById(pred.getId());
+ return (Version) sessionContext.getSessionImpl().getNodeById(pred.getId());
}
/**
@@ -146,7 +149,7 @@ public class VersionImpl extends NodeImp
* {@inheritDoc}
*/
public Node getFrozenNode() throws RepositoryException {
- return session.getNodeById(getInternalVersion().getFrozenNodeId());
+ return sessionContext.getSessionImpl().getNodeById(getInternalVersion().getFrozenNodeId());
}
/**