Author: jukka Date: Tue Oct 2 02:27:27 2007 New Revision: 581168 URL: http://svn.apache.org/viewvc?rev=581168&view=rev Log: 1.3: Merged revision 550466 (JCR-978) Added: jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java - copied unchanged from r550466, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java Modified: jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java Modified: jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java?rev=581168&r1=581167&r2=581168&view=diff ============================================================================== --- jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java (original) +++ jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java Tue Oct 2 02:27:27 2007 @@ -25,7 +25,6 @@ import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; import org.apache.jackrabbit.core.state.NodeReferencesId; -import org.apache.jackrabbit.core.state.SharedItemStateManager; import org.apache.jackrabbit.core.virtual.VirtualItemStateProvider; import org.apache.jackrabbit.core.virtual.VirtualNodeState; import org.apache.jackrabbit.core.virtual.VirtualPropertyState; @@ -39,11 +38,6 @@ class VersionItemStateProvider implements VirtualItemStateProvider, ItemStateListener { /** - * The version manager - */ - private final VersionManagerImpl vMgr; - - /** * The root node UUID for the version storage */ private final NodeId historyRootId; @@ -51,7 +45,7 @@ /** * The item state manager directly on the version persistence mgr */ - private final SharedItemStateManager stateMgr; + private final VersionItemStateManager stateMgr; /** * Map of returned items. this is kept for invalidating @@ -59,13 +53,13 @@ private ReferenceMap items = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.WEAK); /** - * Creates a bew vesuion manager + * Creates a new version manager * */ - public VersionItemStateProvider(VersionManagerImpl vMgr, SharedItemStateManager stateMgr) { - this.vMgr = vMgr; + public VersionItemStateProvider(NodeId historyRootId, + VersionItemStateManager stateMgr) { + this.historyRootId = historyRootId; this.stateMgr = stateMgr; - this.historyRootId = vMgr.getHistoryRootId(); stateMgr.addListener(this); } @@ -122,7 +116,7 @@ * @inheritDoc */ public boolean setNodeReferences(NodeReferences refs) { - return vMgr.setNodeReferences(refs); + return stateMgr.setNodeReferences(refs); } /** Modified: jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java?rev=581168&r1=581167&r2=581168&view=diff ============================================================================== --- jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java (original) +++ jackrabbit/branches/1.3/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java Tue Oct 2 02:27:27 2007 @@ -54,7 +54,6 @@ import java.util.List; import javax.jcr.PropertyType; -import javax.jcr.ReferentialIntegrityException; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.version.Version; @@ -100,9 +99,9 @@ private final FileSystem fs; /** - * the shared state manager for the version storage + * the version state manager for the version storage */ - private SharedItemStateManager sharedStateMgr; + private VersionItemStateManager sharedStateMgr; /** * the virtual item state provider that exposes the version storage @@ -158,7 +157,7 @@ cl.added(pt); pMgr.store(cl); } - sharedStateMgr = createSharedStateManager(pMgr, rootId, ntReg, cacheFactory); + sharedStateMgr = createItemStateManager(pMgr, rootId, ntReg, cacheFactory); stateMgr = new LocalItemStateManager(sharedStateMgr, escFactory, cacheFactory); stateMgr.addListener(this); @@ -167,7 +166,8 @@ historyRoot = new NodeStateEx(stateMgr, ntReg, nodeState, QName.JCR_VERSIONSTORAGE); // create the virtual item state provider - versProvider = new VersionItemStateProvider(this, sharedStateMgr); + versProvider = new VersionItemStateProvider( + getHistoryRootId(), sharedStateMgr); } catch (ItemStateException e) { throw new RepositoryException(e); @@ -405,47 +405,15 @@ } /** - * Sets and stored the node references from external nodes. - * @param references - * @return true if the references could be set. - */ - public boolean setNodeReferences(NodeReferences references) { - acquireWriteLock(); - try { - // filter out version storage intern ones - NodeReferences refs = new NodeReferences(references.getId()); - Iterator iter = references.getReferences().iterator(); - while (iter.hasNext()) { - PropertyId id = (PropertyId) iter.next(); - if (!hasItem(id.getParentId())) { - refs.addReference(id); - } - } - - ChangeLog log = new ChangeLog(); - log.modified(refs); - pMgr.store(log); - return true; - } catch (ItemStateException e) { - log.error("Error while setting references: " + e.toString()); - return false; - } finally { - releaseWriteLock(); - } - } - - /** * {@inheritDoc} */ protected List getItemReferences(InternalVersionItem item) { - acquireReadLock(); try { - NodeReferences refs = pMgr.load(new NodeReferencesId(item.getId())); + NodeReferences refs = stateMgr.getNodeReferences( + new NodeReferencesId(item.getId())); return refs.getReferences(); } catch (ItemStateException e) { return Collections.EMPTY_LIST; - } finally { - releaseReadLock(); } } @@ -466,7 +434,7 @@ } /** - * Creates a SharedItemStateManager or derivative. + * Creates a VersionItemStateManager or derivative. * * @param pMgr persistence manager * @param rootId root node id @@ -475,12 +443,11 @@ * @return item state manager * @throws ItemStateException if an error occurs */ - protected SharedItemStateManager createSharedStateManager(PersistenceManager pMgr, - NodeId rootId, - NodeTypeRegistry ntReg, - ItemStateCacheFactory cacheFactory) + protected VersionItemStateManager createItemStateManager(PersistenceManager pMgr, + NodeId rootId, + NodeTypeRegistry ntReg, + ItemStateCacheFactory cacheFactory) throws ItemStateException { - return new VersionItemStateManager(pMgr, rootId, ntReg, cacheFactory); } @@ -533,39 +500,6 @@ } //--------------------------------------------------------< inner classes > - /** - * Spezialized SharedItemStateManager that filters out NodeReferences to - * non-versioning states. - */ - protected class VersionItemStateManager extends SharedItemStateManager { - - public VersionItemStateManager(PersistenceManager persistMgr, - NodeId rootNodeId, - NodeTypeRegistry ntReg, - ItemStateCacheFactory cacheFactory) - throws ItemStateException { - super(persistMgr, rootNodeId, ntReg, false, cacheFactory); - } - - protected void checkReferentialIntegrity(ChangeLog changes) - throws ReferentialIntegrityException, ItemStateException { - // only store VV-type references and NV-type references - - // check whether targets of modified node references exist - for (Iterator iter = changes.modifiedRefs(); iter.hasNext();) { - NodeReferences refs = (NodeReferences) iter.next(); - NodeId id = refs.getTargetId(); - // no need to check existence of target if there are no references - if (refs.hasReferences()) { - if (!changes.has(id) && !hasItemState(id)) { - // remove references - iter.remove(); - } - } - } - } - - } public static final class DynamicESCFactory implements EventStateCollectionFactory {