Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/state/AbstractISMLockingTest.java =================================================================== --- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/state/AbstractISMLockingTest.java (revision 793175) +++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/state/AbstractISMLockingTest.java (working copy) @@ -24,11 +24,9 @@ import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.ISMLocking.ReadLock; import org.apache.jackrabbit.core.state.ISMLocking.WriteLock; import org.apache.jackrabbit.spi.commons.name.NameConstants; -import org.apache.jackrabbit.uuid.UUID; /** * AbstractISMLockingTest contains test cases for the ISMLocking requirements. @@ -60,7 +58,7 @@ locking = createISMLocking(); NodeId id = new NodeId(); state = new NodeState(id, NameConstants.NT_BASE, null, ItemState.STATUS_EXISTING, true); - refs = new NodeReferences(new NodeReferencesId(state.getNodeId())); + refs = new NodeReferences(state.getNodeId()); logs = new ArrayList(); ChangeLog log = new ChangeLog(); log.added(state); Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/CachingHierarchyManagerTest.java =================================================================== --- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/CachingHierarchyManagerTest.java (revision 793175) +++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/CachingHierarchyManagerTest.java (working copy) @@ -23,7 +23,6 @@ import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; import org.apache.jackrabbit.core.state.ChildNodeEntry; import org.apache.jackrabbit.core.state.ItemState; @@ -39,7 +38,6 @@ import org.apache.jackrabbit.spi.commons.name.NameConstants; import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl; import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl; -import org.apache.jackrabbit.uuid.UUID; public class CachingHierarchyManagerTest extends TestCase { @@ -559,7 +557,7 @@ /** * {@inheritDoc} */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { return null; } @@ -567,7 +565,7 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { return false; } } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/PersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/PersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/PersistenceManager.java (working copy) @@ -23,7 +23,6 @@ import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.ChangeLog; /** @@ -132,13 +131,13 @@ throws NoSuchItemStateException, ItemStateException; /** - * Load the persistent members of a node references object. + * Load the persisted references to the node with the given identifier. * * @param id reference target node id * @throws NoSuchItemStateException if the target node does not exist * @throws ItemStateException if another error occurs */ - NodeReferences load(NodeReferencesId id) + NodeReferences getReferencesTo(NodeId id) throws NoSuchItemStateException, ItemStateException; /** @@ -169,7 +168,7 @@ * false otherwise * @throws ItemStateException on persistence manager errors */ - boolean exists(NodeReferencesId targetId) throws ItemStateException; + boolean hasReferencesTo(NodeId targetId) throws ItemStateException; /** * Atomically saves the given set of changes. Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java (working copy) @@ -30,7 +30,6 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.persistence.PMContext; import org.apache.jackrabbit.core.state.PropertyState; @@ -210,8 +209,8 @@ return buildNodeFolderPath(id) + "/" + NODEFILENAME; } - private String buildNodeReferencesFilePath(NodeReferencesId id) { - return buildNodeFolderPath(id.getTargetId()) + "/" + NODEREFSFILENAME; + private String buildNodeReferencesFilePath(NodeId id) { + return buildNodeFolderPath(id) + "/" + NODEREFSFILENAME; } private void readState(DOMWalker walker, NodeState state) @@ -395,7 +394,7 @@ throw new ItemStateException(msg); } // check targetId - if (!refs.getId().equals(NodeReferencesId.valueOf(walker.getAttribute(TARGETID_ATTRIBUTE)))) { + if (!refs.getTargetId().equals(NodeId.valueOf(walker.getAttribute(TARGETID_ATTRIBUTE)))) { String msg = "invalid serialized state: targetId mismatch"; log.debug(msg); throw new ItemStateException(msg); @@ -780,7 +779,7 @@ /** * {@inheritDoc} */ - public synchronized NodeReferences load(NodeReferencesId id) + public synchronized NodeReferences getReferencesTo(NodeId id) throws NoSuchItemStateException, ItemStateException { if (!initialized) { @@ -824,8 +823,7 @@ throw new IllegalStateException("not initialized"); } - NodeReferencesId id = refs.getId(); - String refsFilePath = buildNodeReferencesFilePath(id); + String refsFilePath = buildNodeReferencesFilePath(refs.getTargetId()); FileSystemResource refsFile = new FileSystemResource(itemStateFS, refsFilePath); try { refsFile.makeParentDirs(); @@ -843,7 +841,7 @@ } writer.write("\n"); writer.write("<" + NODEREFERENCES_ELEMENT + " " - + TARGETID_ATTRIBUTE + "=\"" + refs.getId() + "\">\n"); + + TARGETID_ATTRIBUTE + "=\"" + refs.getTargetId() + "\">\n"); // write references (i.e. the id's of the REFERENCE properties) Iterator iter = refs.getReferences().iterator(); while (iter.hasNext()) { @@ -856,7 +854,7 @@ writer.close(); } } catch (Exception e) { - String msg = "failed to store references: " + id; + String msg = "failed to store references: " + refs.getTargetId(); log.debug(msg); throw new ItemStateException(msg, e); } @@ -870,8 +868,7 @@ throw new IllegalStateException("not initialized"); } - NodeReferencesId id = refs.getId(); - String refsFilePath = buildNodeReferencesFilePath(id); + String refsFilePath = buildNodeReferencesFilePath(refs.getTargetId()); FileSystemResource refsFile = new FileSystemResource(itemStateFS, refsFilePath); try { if (refsFile.exists()) { @@ -879,7 +876,7 @@ refsFile.delete(true); } } catch (FileSystemException fse) { - String msg = "failed to delete references: " + id; + String msg = "failed to delete references: " + refs.getTargetId(); log.debug(msg); throw new ItemStateException(msg, fse); } @@ -926,7 +923,7 @@ /** * {@inheritDoc} */ - public synchronized boolean exists(NodeReferencesId id) + public synchronized boolean hasReferencesTo(NodeId id) throws ItemStateException { if (!initialized) { Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/AbstractPersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/AbstractPersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/AbstractPersistenceManager.java (working copy) @@ -90,7 +90,7 @@ if (refs.hasReferences()) { store(refs); } else { - if (exists(refs.getId())) { + if (hasReferencesTo(refs.getTargetId())) { destroy(refs); } } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/db/DatabasePersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/db/DatabasePersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/db/DatabasePersistenceManager.java (working copy) @@ -31,7 +31,6 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.state.PropertyState; import org.apache.jackrabbit.core.value.InternalValue; @@ -560,7 +559,7 @@ /** * {@inheritDoc} */ - public NodeReferences load(NodeReferencesId targetId) + public NodeReferences getReferencesTo(NodeId targetId) throws NoSuchItemStateException, ItemStateException { if (!initialized) { throw new IllegalStateException("not initialized"); @@ -612,7 +611,7 @@ } // check if insert or update - boolean update = exists(refs.getId()); + boolean update = hasReferencesTo(refs.getTargetId()); String sql = (update) ? nodeReferenceUpdateSQL : nodeReferenceInsertSQL; try { @@ -623,12 +622,12 @@ // we are synchronized on this instance, therefore we do not // not have to additionally synchronize on the sql statement - executeStmt(sql, new Object[]{out.toByteArray(), refs.getId().toString()}); + executeStmt(sql, new Object[]{out.toByteArray(), refs.getTargetId().toString()}); // there's no need to close a ByteArrayOutputStream //out.close(); } catch (Exception e) { - String msg = "failed to write node references: " + refs.getId(); + String msg = "failed to write node references: " + refs.getTargetId(); log.error(msg, e); throw new ItemStateException(msg, e); } @@ -646,9 +645,9 @@ try { // we are synchronized on this instance, therefore we do not // not have to additionally synchronize on the sql statement - executeStmt(nodeReferenceDeleteSQL, new Object[]{refs.getId().toString()}); + executeStmt(nodeReferenceDeleteSQL, new Object[]{refs.getTargetId().toString()}); } catch (Exception e) { - String msg = "failed to delete node references: " + refs.getId(); + String msg = "failed to delete node references: " + refs.getTargetId(); log.error(msg, e); throw new ItemStateException(msg, e); } @@ -710,7 +709,7 @@ /** * {@inheritDoc} */ - public boolean exists(NodeReferencesId targetId) throws ItemStateException { + public boolean hasReferencesTo(NodeId targetId) throws ItemStateException { if (!initialized) { throw new IllegalStateException("not initialized"); } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/db/OraclePersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/db/OraclePersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/db/OraclePersistenceManager.java (working copy) @@ -252,7 +252,7 @@ } // check if insert or update - boolean update = exists(refs.getId()); + boolean update = hasReferencesTo(refs.getTargetId()); String sql = (update) ? nodeReferenceUpdateSQL : nodeReferenceInsertSQL; Blob blob = null; @@ -265,12 +265,12 @@ // we are synchronized on this instance, therefore we do not // not have to additionally synchronize on the sql statement blob = createTemporaryBlob(new ByteArrayInputStream(out.toByteArray())); - executeStmt(sql, new Object[]{blob, refs.getId().toString()}); + executeStmt(sql, new Object[]{blob, refs.getTargetId().toString()}); // there's no need to close a ByteArrayOutputStream //out.close(); } catch (Exception e) { - String msg = "failed to write node references: " + refs.getId(); + String msg = "failed to write node references: " + refs.getTargetId(); log.error(msg, e); throw new ItemStateException(msg, e); } finally { Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/PersistenceCopier.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/PersistenceCopier.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/PersistenceCopier.java (working copy) @@ -25,7 +25,6 @@ import org.apache.jackrabbit.core.state.ChildNodeEntry; import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.state.PropertyState; import org.apache.jackrabbit.spi.Name; @@ -142,11 +141,11 @@ } // Copy all node references - NodeReferencesId refsId = new NodeReferencesId(sourceNode.getNodeId()); - if (source.exists(refsId)) { - changes.modified(source.load(refsId)); - } else if (target.exists(refsId)) { - NodeReferences references = target.load(refsId); + if (source.hasReferencesTo(sourceNode.getNodeId())) { + changes.modified(source.getReferencesTo(sourceNode.getNodeId())); + } else if (target.hasReferencesTo(sourceNode.getNodeId())) { + NodeReferences references = + target.getReferencesTo(sourceNode.getNodeId()); references.clearAllReferences(); changes.modified(references); } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.java (working copy) @@ -59,7 +59,6 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.util.Text; import org.apache.jackrabbit.uuid.UUID; import org.slf4j.Logger; @@ -1234,7 +1233,7 @@ /** * {@inheritDoc} */ - public synchronized NodeReferences load(NodeReferencesId targetId) + public synchronized NodeReferences getReferencesTo(NodeId targetId) throws NoSuchItemStateException, ItemStateException { if (!initialized) { throw new IllegalStateException("not initialized"); @@ -1244,7 +1243,7 @@ InputStream in = null; try { Statement stmt = connectionManager.executeStmt( - nodeReferenceSelectSQL, getKey(targetId.getTargetId())); + nodeReferenceSelectSQL, getKey(targetId)); rs = stmt.getResultSet(); if (!rs.next()) { throw new NoSuchItemStateException(targetId.toString()); @@ -1283,7 +1282,7 @@ } // check if insert or update - boolean update = exists(refs.getId()); + boolean update = hasReferencesTo(refs.getTargetId()); String sql = (update) ? nodeReferenceUpdateSQL : nodeReferenceInsertSQL; try { @@ -1298,7 +1297,7 @@ // there's no need to close a ByteArrayOutputStream //out.close(); } catch (Exception e) { - String msg = "failed to write node references: " + refs.getId(); + String msg = "failed to write node references: " + refs.getTargetId(); log.error(msg, e); throw new ItemStateException(msg, e); } @@ -1328,15 +1327,15 @@ /** * {@inheritDoc} */ - public synchronized boolean exists(NodeReferencesId targetId) throws ItemStateException { + public synchronized boolean hasReferencesTo(NodeId targetId) throws ItemStateException { if (!initialized) { throw new IllegalStateException("not initialized"); } ResultSet rs = null; try { - Statement stmt = connectionManager.executeStmt(nodeReferenceSelectSQL, - getKey(targetId.getTargetId())); + Statement stmt = connectionManager.executeStmt( + nodeReferenceSelectSQL, getKey(targetId)); rs = stmt.getResultSet(); // a reference exists if the result has at least one entry Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleFsPersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleFsPersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/BundleFsPersistenceManager.java (working copy) @@ -34,7 +34,6 @@ import org.apache.jackrabbit.core.id.NodeId; import org.apache.jackrabbit.core.id.PropertyId; import org.apache.jackrabbit.core.state.ItemStateException; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; @@ -296,12 +295,12 @@ * @param id the id of the node * @return the buffer with the appended data. */ - protected StringBuffer buildNodeReferencesFilePath(StringBuffer buf, - NodeReferencesId id) { + protected StringBuffer buildNodeReferencesFilePath( + StringBuffer buf, NodeId id) { if (buf == null) { buf = new StringBuffer(); } - buildNodeFolderPath(buf, id.getTargetId()); + buildNodeFolderPath(buf, id); buf.append('.'); buf.append(NODEREFSFILENAME); return buf; @@ -351,7 +350,7 @@ /** * {@inheritDoc} */ - public synchronized NodeReferences load(NodeReferencesId targetId) + public synchronized NodeReferences getReferencesTo(NodeId targetId) throws NoSuchItemStateException, ItemStateException { if (!initialized) { throw new IllegalStateException("not initialized"); @@ -413,7 +412,7 @@ throw new IllegalStateException("not initialized"); } try { - StringBuffer buf = buildNodeReferencesFilePath(null, refs.getId()); + StringBuffer buf = buildNodeReferencesFilePath(null, refs.getTargetId()); itemFs.deleteFile(buf.toString()); } catch (Exception e) { if (e instanceof NoSuchItemStateException) { @@ -428,7 +427,7 @@ /** * {@inheritDoc} */ - public synchronized boolean exists(NodeReferencesId targetId) throws ItemStateException { + public synchronized boolean hasReferencesTo(NodeId targetId) throws ItemStateException { if (!initialized) { throw new IllegalStateException("not initialized"); } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java (working copy) @@ -25,7 +25,6 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; import org.apache.jackrabbit.core.state.NoSuchItemStateException; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.PropertyState; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.id.ItemId; @@ -238,12 +237,12 @@ * @param id the id of the node * @return the buffer with the appended data. */ - protected StringBuffer buildNodeReferencesFilePath(StringBuffer buf, - NodeReferencesId id) { + protected StringBuffer buildNodeReferencesFilePath( + StringBuffer buf, NodeId id) { if (buf == null) { buf = new StringBuffer(); } - buildNodeFolderPath(buf, id.getTargetId()); + buildNodeFolderPath(buf, id); buf.append(FileSystem.SEPARATOR); buf.append(NODEREFSFILENAME); return buf; @@ -370,12 +369,6 @@ throws ItemStateException; /** - * {@inheritDoc} - */ - public abstract NodeReferences load(NodeReferencesId targetId) - throws NoSuchItemStateException, ItemStateException; - - /** * Deletes the node references from the underlying system. * * @param refs the node references to destroy. Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/util/ItemStateBinding.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/util/ItemStateBinding.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/util/ItemStateBinding.java (working copy) @@ -18,8 +18,6 @@ import org.apache.jackrabbit.core.persistence.util.BLOBStore; import org.apache.jackrabbit.core.persistence.PersistenceManager; -import org.apache.jackrabbit.core.id.NodeReferencesId; -import org.apache.jackrabbit.core.state.NodeReferences; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.state.ChildNodeEntry; import org.apache.jackrabbit.core.util.StringIndex; @@ -28,7 +26,6 @@ import org.apache.jackrabbit.core.data.DataStore; import org.apache.jackrabbit.core.nodetype.NodeDefId; import org.apache.jackrabbit.spi.Name; -import org.apache.jackrabbit.uuid.UUID; import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl; import java.io.DataInputStream; @@ -139,46 +136,6 @@ } /** - * Deserializes a NodeReferences from the data input stream. - * - * @param in the input stream - * @param id the id of the nodereference to deserialize - * @param pMgr the persistence manager - * @return the node references - * @throws IOException in an I/O error occurs. - */ - public NodeReferences readState(DataInputStream in, NodeReferencesId id, - PersistenceManager pMgr) - throws IOException { - NodeReferences state = new NodeReferences(id); - int count = in.readInt(); // count & version - // int version = (count >> 24) | 0x0ff; - count &= 0x00ffffff; - for (int i = 0; i < count; i++) { - state.addReference(readPropertyId(in)); // propertyId - } - return state; - } - - /** - * Serializes a NodeReferences to the data output stream. - * - * @param out the output stream - * @param state the state to write. - * @throws IOException in an I/O error occurs. - */ - public void writeState(DataOutputStream out, NodeReferences state) - throws IOException { - // references - Collection c = state.getReferences(); - out.writeInt(c.size() | (VERSION_CURRENT << 24)); // count - for (Iterator iter = c.iterator(); iter.hasNext();) { - PropertyId propId = iter.next(); - writePropertyId(out, propId); - } - } - - /** * Deserializes a NodeState from the data input stream. * * @param in the input streaam Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/Oracle9PersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/Oracle9PersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/Oracle9PersistenceManager.java (working copy) @@ -144,7 +144,7 @@ Blob blob = null; try { // check if insert or update - boolean update = exists(refs.getId()); + boolean update = hasReferencesTo(refs.getTargetId()); String sql = (update) ? nodeReferenceUpdateSQL : nodeReferenceInsertSQL; ByteArrayOutputStream out = new ByteArrayOutputStream(INITIAL_BUFFER_SIZE); Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/obj/ObjectPersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/obj/ObjectPersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/obj/ObjectPersistenceManager.java (working copy) @@ -31,7 +31,6 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.state.PropertyState; import org.apache.jackrabbit.core.value.InternalValue; @@ -124,8 +123,8 @@ return buildNodeFolderPath(id) + FileSystem.SEPARATOR + NODEFILENAME; } - private static String buildNodeReferencesFilePath(NodeReferencesId id) { - return buildNodeFolderPath(id.getTargetId()) + FileSystem.SEPARATOR + NODEREFSFILENAME; + private static String buildNodeReferencesFilePath(NodeId id) { + return buildNodeFolderPath(id) + FileSystem.SEPARATOR + NODEREFSFILENAME; } //---------------------------------------------------< PersistenceManager > @@ -259,7 +258,7 @@ /** * {@inheritDoc} */ - public synchronized NodeReferences load(NodeReferencesId id) + public synchronized NodeReferences getReferencesTo(NodeId id) throws NoSuchItemStateException, ItemStateException { if (!initialized) { @@ -355,7 +354,7 @@ throw new IllegalStateException("not initialized"); } - String refsFilePath = buildNodeReferencesFilePath(refs.getId()); + String refsFilePath = buildNodeReferencesFilePath(refs.getTargetId()); FileSystemResource refsFile = new FileSystemResource(itemStateFS, refsFilePath); try { refsFile.makeParentDirs(); @@ -366,7 +365,7 @@ out.close(); } } catch (Exception e) { - String msg = "failed to store references: " + refs.getId(); + String msg = "failed to store references: " + refs.getTargetId(); log.debug(msg); throw new ItemStateException(msg, e); } @@ -435,7 +434,7 @@ throw new IllegalStateException("not initialized"); } - String refsFilePath = buildNodeReferencesFilePath(refs.getId()); + String refsFilePath = buildNodeReferencesFilePath(refs.getTargetId()); FileSystemResource refsFile = new FileSystemResource(itemStateFS, refsFilePath); try { if (refsFile.exists()) { @@ -443,7 +442,7 @@ refsFile.delete(true); } } catch (FileSystemException fse) { - String msg = "failed to delete node references: " + refs.getId(); + String msg = "failed to delete node references: " + refs.getTargetId(); log.debug(msg); throw new ItemStateException(msg, fse); } @@ -490,7 +489,7 @@ /** * {@inheritDoc} */ - public synchronized boolean exists(NodeReferencesId id) + public synchronized boolean hasReferencesTo(NodeId id) throws ItemStateException { if (!initialized) { Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemPersistenceManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemPersistenceManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/mem/InMemPersistenceManager.java (working copy) @@ -29,7 +29,6 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.state.PropertyState; import org.apache.jackrabbit.core.persistence.util.FileSystemBLOBStore; @@ -72,7 +71,7 @@ protected boolean initialized; protected Map stateStore; - protected Map refsStore; + protected Map refsStore; // initial size of buffer used to serialize objects protected static final int INITIAL_BUFFER_SIZE = 1024; @@ -214,7 +213,7 @@ int n = in.readInt(); // number of entries while (n-- > 0) { String s = in.readUTF(); // target id - NodeReferencesId id = NodeReferencesId.valueOf(s); + NodeId id = NodeId.valueOf(s); int length = in.readInt(); // data length byte[] data = new byte[length]; in.readFully(data); // data @@ -266,7 +265,7 @@ try { out.writeInt(refsStore.size()); // number of entries // entries - for (NodeReferencesId id : refsStore.keySet()) { + for (NodeId id : refsStore.keySet()) { out.writeUTF(id.toString()); // target id byte[] data = refsStore.get(id); out.writeInt(data.length); // data length @@ -287,7 +286,7 @@ } stateStore = new HashMap(initialCapacity, loadFactor); - refsStore = new HashMap(initialCapacity, loadFactor); + refsStore = new HashMap(initialCapacity, loadFactor); wspFS = context.getFileSystem(); @@ -492,7 +491,7 @@ /** * {@inheritDoc} */ - public synchronized NodeReferences load(NodeReferencesId id) + public synchronized NodeReferences getReferencesTo(NodeId id) throws NoSuchItemStateException, ItemStateException { if (!initialized) { @@ -531,11 +530,11 @@ Serializer.serialize(refs, out); // store in serialized format in map for better memory efficiency - refsStore.put(refs.getId(), out.toByteArray()); + refsStore.put(refs.getTargetId(), out.toByteArray()); // there's no need to close a ByteArrayOutputStream //out.close(); } catch (Exception e) { - String msg = "failed to store references: " + refs.getId(); + String msg = "failed to store references: " + refs.getTargetId(); log.debug(msg); throw new ItemStateException(msg, e); } @@ -550,7 +549,7 @@ } // remove node references - refsStore.remove(refs.getId()); + refsStore.remove(refs.getTargetId()); } /** @@ -576,7 +575,7 @@ /** * {@inheritDoc} */ - public boolean exists(NodeReferencesId id) throws ItemStateException { + public boolean hasReferencesTo(NodeId id) throws ItemStateException { if (!initialized) { throw new IllegalStateException("not initialized"); } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/virtual/AbstractVISProvider.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/virtual/AbstractVISProvider.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/virtual/AbstractVISProvider.java (working copy) @@ -29,13 +29,11 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.state.ItemStateReferenceMap; import org.apache.jackrabbit.core.state.ItemStateListener; import org.apache.jackrabbit.core.state.ChildNodeEntry; import org.apache.jackrabbit.spi.Name; -import org.apache.jackrabbit.uuid.UUID; import org.apache.jackrabbit.util.WeakIdentityCollection; import org.apache.jackrabbit.spi.commons.name.NameConstants; import org.slf4j.Logger; @@ -142,7 +140,7 @@ /** * {@inheritDoc} */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { throw new NoSuchItemStateException(id.toString()); } @@ -150,7 +148,7 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { return false; } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java (working copy) @@ -70,7 +70,6 @@ import org.apache.jackrabbit.commons.iterator.PropertyIteratorAdapter; import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; import org.apache.jackrabbit.core.nodetype.EffectiveNodeType; import org.apache.jackrabbit.core.nodetype.ItemDef; @@ -4661,9 +4660,8 @@ sanityCheck(); try { - NodeReferencesId targetId = new NodeReferencesId((NodeId) id); - if (stateMgr.hasNodeReferences(targetId)) { - NodeReferences refs = stateMgr.getNodeReferences(targetId); + if (stateMgr.hasNodeReferences(getNodeId())) { + NodeReferences refs = stateMgr.getNodeReferences(getNodeId()); // refs.getReferences() returns a list of PropertyId's List idList = refs.getReferences(); if (name != null) { Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java (working copy) @@ -37,7 +37,6 @@ import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; import org.apache.jackrabbit.core.lock.LockManager; import org.apache.jackrabbit.core.nodetype.EffectiveNodeType; @@ -66,7 +65,6 @@ import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException; import org.apache.jackrabbit.spi.commons.name.NameConstants; import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl; -import org.apache.jackrabbit.uuid.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -919,10 +917,10 @@ if ((options & CHECK_REFERENCES) == CHECK_REFERENCES) { EffectiveNodeType ent = getEffectiveNodeType(targetState); if (ent.includesNodeType(NameConstants.MIX_REFERENCEABLE)) { - NodeReferencesId refsId = new NodeReferencesId(targetState.getNodeId()); - if (stateMgr.hasNodeReferences(refsId)) { + NodeId targetId = targetState.getNodeId(); + if (stateMgr.hasNodeReferences(targetId)) { try { - NodeReferences refs = stateMgr.getNodeReferences(refsId); + NodeReferences refs = stateMgr.getNodeReferences(targetId); if (refs.hasReferences()) { throw new ReferentialIntegrityException(safeGetJCRPath(targetPath) + ": cannot remove node with references"); Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/LocalItemStateManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/LocalItemStateManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/LocalItemStateManager.java (working copy) @@ -20,7 +20,6 @@ import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; import org.apache.jackrabbit.core.observation.EventStateCollectionFactory; import org.apache.jackrabbit.spi.Name; @@ -206,11 +205,11 @@ /** * {@inheritDoc} */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { // check change log - NodeReferences refs = changeLog.get(id); + NodeReferences refs = changeLog.getReferencesTo(id); if (refs != null) { return refs; } @@ -220,9 +219,9 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { // check change log - if (changeLog.get(id) != null) { + if (changeLog.getReferencesTo(id) != null) { return true; } return sharedStateMgr.hasNodeReferences(id); Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java (working copy) @@ -32,7 +32,6 @@ import org.apache.jackrabbit.core.cluster.UpdateEventChannel; import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; import org.apache.jackrabbit.core.nodetype.EffectiveNodeType; import org.apache.jackrabbit.core.nodetype.NodeDef; @@ -315,13 +314,13 @@ /** * {@inheritDoc} */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { - ISMLocking.ReadLock readLock = acquireReadLock(id.getTargetId()); + ISMLocking.ReadLock readLock = acquireReadLock(id); try { // check persistence manager try { - return persistMgr.load(id); + return persistMgr.getReferencesTo(id); } catch (NoSuchItemStateException e) { // ignore } @@ -345,17 +344,17 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { ISMLocking.ReadLock readLock; try { - readLock = acquireReadLock(id.getTargetId()); + readLock = acquireReadLock(id); } catch (ItemStateException e) { return false; } try { // check persistence manager try { - if (persistMgr.exists(id)) { + if (persistMgr.hasReferencesTo(id)) { return true; } } catch (ItemStateException e) { @@ -674,7 +673,7 @@ for (Iterator iter = local.modifiedRefs(); iter.hasNext();) { NodeReferences refs = iter.next(); boolean virtual = false; - NodeId id = refs.getId().getTargetId(); + NodeId id = refs.getTargetId(); for (int i = 0; i < virtualProviders.length; i++) { if (virtualProviders[i].hasItemState(id)) { ChangeLog virtualRefs = virtualNodeReferences[i]; @@ -919,16 +918,15 @@ private void addReference(PropertyId id, NodeId target) throws ItemStateException { - NodeReferencesId refsId = new NodeReferencesId(target); if (virtualProvider == null - || !virtualProvider.hasNodeReferences(refsId)) { + || !virtualProvider.hasNodeReferences(target)) { // get or create the references instance - NodeReferences refs = local.get(refsId); + NodeReferences refs = local.getReferencesTo(target); if (refs == null) { - if (hasNodeReferences(refsId)) { - refs = getNodeReferences(refsId); + if (hasNodeReferences(target)) { + refs = getNodeReferences(target); } else { - refs = new NodeReferences(refsId); + refs = new NodeReferences(target); } } // add reference @@ -954,14 +952,13 @@ private void removeReference(PropertyId id, NodeId target) throws ItemStateException { - NodeReferencesId refsId = new NodeReferencesId(target); if (virtualProvider == null - || !virtualProvider.hasNodeReferences(refsId)) { + || !virtualProvider.hasNodeReferences(target)) { // either get node references from change log or load from // persistence manager - NodeReferences refs = local.get(refsId); - if (refs == null && hasNodeReferences(refsId)) { - refs = getNodeReferences(refsId); + NodeReferences refs = local.getReferencesTo(target); + if (refs == null && hasNodeReferences(target)) { + refs = getNodeReferences(target); } if (refs != null) { // remove reference @@ -994,20 +991,20 @@ if (state.isNode()) { NodeState node = (NodeState) state; if (isReferenceable(node)) { - NodeReferencesId refsId = new NodeReferencesId(node.getNodeId()); + NodeId targetId = node.getNodeId(); // either get node references from change log or // load from persistence manager - NodeReferences refs = local.get(refsId); + NodeReferences refs = local.getReferencesTo(targetId); if (refs == null) { - if (!hasNodeReferences(refsId)) { + if (!hasNodeReferences(targetId)) { continue; } - refs = getNodeReferences(refsId); + refs = getNodeReferences(targetId); } // in some versioning operations (such as restore) a node // may actually be deleted and then again added with the // same UUID, i.e. the node is still referenceable. - if (refs.hasReferences() && !local.has(node.getNodeId())) { + if (refs.hasReferences() && !local.has(targetId)) { String msg = node.getNodeId() + ": the node cannot be removed because it is still being referenced."; log.debug(msg); Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java (working copy) @@ -31,12 +31,10 @@ import org.apache.jackrabbit.core.TransactionException; import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; import org.apache.jackrabbit.core.observation.EventStateCollectionFactory; import org.apache.jackrabbit.core.value.InternalValue; import org.apache.jackrabbit.core.virtual.VirtualItemStateProvider; -import org.apache.jackrabbit.uuid.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -312,7 +310,7 @@ * check the transactional change log. Fallback is always the call to * the base class. */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { if (virtualProvider != null && virtualProvider.hasNodeReferences(id)) { @@ -329,7 +327,7 @@ * check the transactional change log. Fallback is always the call to * the base class. */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { if (virtualProvider != null && virtualProvider.hasNodeReferences(id)) { return true; } @@ -367,7 +365,7 @@ * @throws ItemStateException if an error occurs while reading from the * underlying shared item state manager. */ - private NodeReferences getReferences(NodeReferencesId id) + private NodeReferences getReferences(NodeId id) throws ItemStateException { NodeReferences refs; try { @@ -378,14 +376,13 @@ // apply changes from change log ChangeLog changes = getChangeLog(); if (changes != null) { - NodeId target = id.getTargetId(); // check removed reference properties for (Iterator it = filterReferenceProperties(changes.deletedStates()); it.hasNext(); ) { PropertyState prop = (PropertyState) it.next(); InternalValue[] values = prop.getValues(); for (int i = 0; i < values.length; i++) { - if (values[i].getNodeId().equals(target)) { + if (values[i].getNodeId().equals(id)) { refs.removeReference(prop.getPropertyId()); break; } @@ -397,7 +394,7 @@ PropertyState prop = (PropertyState) it.next(); InternalValue[] values = prop.getValues(); for (int i = 0; i < values.length; i++) { - if (values[i].getNodeId().equals(target)) { + if (values[i].getNodeId().equals(id)) { refs.addReference(prop.getPropertyId()); break; } @@ -415,7 +412,7 @@ // remove if one of the old values references the node InternalValue[] values = old.getValues(); for (int i = 0; i < values.length; i++) { - if (values[i].getNodeId().equals(target)) { + if (values[i].getNodeId().equals(id)) { refs.removeReference(old.getPropertyId()); break; } @@ -430,7 +427,7 @@ // add if modified value references node InternalValue[] values = prop.getValues(); for (int i = 0; i < values.length; i++) { - if (values[i].getNodeId().equals(target)) { + if (values[i].getNodeId().equals(id)) { refs.addReference(prop.getPropertyId()); break; } @@ -470,8 +467,8 @@ private void updateVirtualReferences(ChangeLog changes) throws ItemStateException { ChangeLog references = new ChangeLog(); - for (Iterator iter = changes.addedStates(); iter.hasNext();) { - ItemState state = (ItemState) iter.next(); + for (Iterator iter = changes.addedStates(); iter.hasNext();) { + ItemState state = iter.next(); if (!state.isNode()) { PropertyState prop = (PropertyState) state; if (prop.getType() == PropertyType.REFERENCE) { @@ -479,13 +476,13 @@ for (int i = 0; vals != null && i < vals.length; i++) { addVirtualReference( references, prop.getPropertyId(), - new NodeReferencesId(vals[i].getNodeId())); + vals[i].getNodeId()); } } } } - for (Iterator iter = changes.modifiedStates(); iter.hasNext();) { - ItemState state = (ItemState) iter.next(); + for (Iterator iter = changes.modifiedStates(); iter.hasNext();) { + ItemState state = iter.next(); if (!state.isNode()) { PropertyState newProp = (PropertyState) state; PropertyState oldProp = @@ -495,7 +492,7 @@ for (int i = 0; vals != null && i < vals.length; i++) { removeVirtualReference( references, oldProp.getPropertyId(), - new NodeReferencesId(vals[i].getNodeId())); + vals[i].getNodeId()); } } if (newProp.getType() == PropertyType.REFERENCE) { @@ -503,13 +500,13 @@ for (int i = 0; vals != null && i < vals.length; i++) { addVirtualReference( references, newProp.getPropertyId(), - new NodeReferencesId(vals[i].getNodeId())); + vals[i].getNodeId()); } } } } - for (Iterator iter = changes.deletedStates(); iter.hasNext();) { - ItemState state = (ItemState) iter.next(); + for (Iterator iter = changes.deletedStates(); iter.hasNext();) { + ItemState state = iter.next(); if (!state.isNode()) { PropertyState prop = (PropertyState) state; if (prop.getType() == PropertyType.REFERENCE) { @@ -517,7 +514,7 @@ for (int i = 0; vals != null && i < vals.length; i++) { removeVirtualReference( references, prop.getPropertyId(), - new NodeReferencesId(vals[i].getNodeId())); + vals[i].getNodeId()); } } } @@ -531,18 +528,18 @@ * Ignored if refsId.getTargetId() does not denote a * virtual node. * @param sourceId property id - * @param refsId node references id + * @param targetId target node id */ private void addVirtualReference( - ChangeLog references, PropertyId sourceId, NodeReferencesId refsId) + ChangeLog references, PropertyId sourceId, NodeId targetId) throws NoSuchItemStateException, ItemStateException { - NodeReferences refs = references.get(refsId); + NodeReferences refs = references.getReferencesTo(targetId); if (refs == null) { - refs = virtualProvider.getNodeReferences(refsId); + refs = virtualProvider.getNodeReferences(targetId); } - if (refs == null && virtualProvider.hasItemState(refsId.getTargetId())) { - refs = new NodeReferences(refsId); + if (refs == null && virtualProvider.hasItemState(targetId)) { + refs = new NodeReferences(targetId); } if (refs != null) { refs.addReference(sourceId); @@ -555,18 +552,18 @@ * Ignored if refsId.getTargetId() does not denote a * virtual node. * @param sourceId property id - * @param refsId node references id + * @param targetId target node id */ private void removeVirtualReference( - ChangeLog references, PropertyId sourceId, NodeReferencesId refsId) + ChangeLog references, PropertyId sourceId, NodeId targetId) throws NoSuchItemStateException, ItemStateException { - NodeReferences refs = references.get(refsId); + NodeReferences refs = references.getReferencesTo(targetId); if (refs == null) { - refs = virtualProvider.getNodeReferences(refsId); + refs = virtualProvider.getNodeReferences(targetId); } - if (refs == null && virtualProvider.hasItemState(refsId.getTargetId())) { - refs = new NodeReferences(refsId); + if (refs == null && virtualProvider.hasItemState(targetId)) { + refs = new NodeReferences(targetId); } if (refs != null) { refs.removeReference(sourceId); Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChangeLog.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChangeLog.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChangeLog.java (working copy) @@ -21,7 +21,7 @@ import org.apache.commons.collections.map.LinkedMap; import org.apache.jackrabbit.core.id.ItemId; -import org.apache.jackrabbit.core.id.NodeReferencesId; +import org.apache.jackrabbit.core.id.NodeId; /** * Registers changes made to states and references and consolidates @@ -51,7 +51,7 @@ * Modified references */ @SuppressWarnings("unchecked") - private final Map modifiedRefs = (Map) new LinkedMap(); + private final Map modifiedRefs = (Map) new LinkedMap(); /** * Checks whether this change log contains any changes. This method is @@ -114,7 +114,7 @@ * @param refs refs that has been modified */ public void modified(NodeReferences refs) { - modifiedRefs.put(refs.getId(), refs); + modifiedRefs.put(refs.id, refs); } /** @@ -173,13 +173,13 @@ } /** - * Return a node references object given its id. Returns + * Return a node references object given the target node id. Returns * null if the node reference is not in the modified * section. * * @return node references or null */ - public NodeReferences get(NodeReferencesId id) { + public NodeReferences getReferencesTo(NodeId id) { return modifiedRefs.get(id); } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/NodeReferences.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/NodeReferences.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/NodeReferences.java (working copy) @@ -22,7 +22,6 @@ import java.util.List; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; /** @@ -37,9 +36,9 @@ static final long serialVersionUID = 7007727035982680717L; /** - * identifier of this NodeReferences instance. + * Identifier of the target node. */ - protected NodeReferencesId id; + protected NodeId id; /** * list of PropertyId's (i.e. the id's of the properties that refer to @@ -51,31 +50,17 @@ */ protected ArrayList references = new ArrayList(); - /** - * Package private constructor - * - * @param id - */ - public NodeReferences(NodeReferencesId id) { + public NodeReferences(NodeId id) { this.id = id; } /** - * Returns the identifier of this node references object. - * - * @return the id of this node references object. - */ - public NodeReferencesId getId() { - return id; - } - - /** * Returns the identifier of the target node. * * @return the id of the target node */ public NodeId getTargetId() { - return id.getTargetId(); + return id; } /** Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ItemStateManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ItemStateManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ItemStateManager.java (working copy) @@ -17,7 +17,7 @@ package org.apache.jackrabbit.core.state; import org.apache.jackrabbit.core.id.ItemId; -import org.apache.jackrabbit.core.id.NodeReferencesId; +import org.apache.jackrabbit.core.id.NodeId; /** * The ItemStateManager interface provides methods for retrieving @@ -51,7 +51,7 @@ * @throws NoSuchItemStateException if the item does not exist * @throws ItemStateException if an error occurs */ - NodeReferences getNodeReferences(NodeReferencesId id) + NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException; /** @@ -61,5 +61,5 @@ * @return true if a node reference object exists for the given * id, otherwise false. */ - boolean hasNodeReferences(NodeReferencesId id); + boolean hasNodeReferences(NodeId id); } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/FineGrainedISMLocking.java (working copy) @@ -25,7 +25,6 @@ import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; import EDU.oswego.cs.dl.util.concurrent.Latch; @@ -239,7 +238,7 @@ private static boolean hasDependency(ChangeLog changeLog, ItemId id) { try { if (changeLog.get(id) == null) { - if (!id.denotesNode() || changeLog.get(new NodeReferencesId((NodeId) id)) == null) { + if (!id.denotesNode() || changeLog.getReferencesTo((NodeId) id) == null) { // change log does not contain the item return false; } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java (working copy) @@ -34,7 +34,6 @@ import org.apache.jackrabbit.core.ZombieHierarchyManager; import org.apache.jackrabbit.core.id.ItemId; import org.apache.jackrabbit.core.id.NodeId; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.id.PropertyId; import org.apache.jackrabbit.core.nodetype.NodeDef; import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry; @@ -206,7 +205,7 @@ /** * {@inheritDoc} */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { return stateMgr.getNodeReferences(id); @@ -215,7 +214,7 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { return stateMgr.hasNodeReferences(id); } @@ -997,7 +996,7 @@ /** * {@inheritDoc} */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { // n/a throw new ItemStateException("getNodeReferences() not implemented"); @@ -1006,7 +1005,7 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { // n/a return false; } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateManager.java (working copy) @@ -30,7 +30,6 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.SharedItemStateManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,11 +60,12 @@ this.pMgr = persistMgr; } - public NodeReferences getNodeReferences(NodeReferencesId id) + @Override + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { // check persistence manager try { - return pMgr.load(id); + return pMgr.getReferencesTo(id); } catch (NoSuchItemStateException e) { // ignore } @@ -73,10 +73,11 @@ throw new NoSuchItemStateException(id.toString()); } - public boolean hasNodeReferences(NodeReferencesId id) { + @Override + public boolean hasNodeReferences(NodeId id) { // check persistence manager try { - if (pMgr.exists(id)) { + if (pMgr.hasReferencesTo(id)) { return true; } } catch (ItemStateException e) { @@ -98,7 +99,7 @@ while (iterator.hasNext()) { // filter out version storage intern ones NodeReferences source = (NodeReferences) iterator.next(); - NodeReferences target = new NodeReferences(source.getId()); + NodeReferences target = new NodeReferences(source.getTargetId()); Iterator iter = source.getReferences().iterator(); while (iter.hasNext()) { PropertyId id = (PropertyId) iter.next(); Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java (working copy) @@ -50,7 +50,6 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.ItemStateListener; import org.apache.jackrabbit.core.state.LocalItemStateManager; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.state.PropertyState; import org.apache.jackrabbit.core.state.SharedItemStateManager; @@ -370,10 +369,9 @@ // we're currently leverage the fact, that only references to "real" // workspaces are recorded. NodeId nodeId = activity.getNodeId(); - NodeReferencesId refId = new NodeReferencesId(nodeId); - if (stateMgr.hasNodeReferences(refId)) { + if (stateMgr.hasNodeReferences(nodeId)) { try { - NodeReferences refs = stateMgr.getNodeReferences(refId); + NodeReferences refs = stateMgr.getNodeReferences(nodeId); if (refs.hasReferences()) { throw new ActivityViolationException("Unable to checkout. " + "Activity is already used for the same node in " + @@ -548,7 +546,7 @@ */ protected boolean hasItemReferences(NodeId id) throws RepositoryException { - return stateMgr.hasNodeReferences(new NodeReferencesId(id)); + return stateMgr.hasNodeReferences(id); } /** Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java (working copy) @@ -32,12 +32,10 @@ import org.apache.jackrabbit.core.state.ItemStateException; import org.apache.jackrabbit.core.state.LocalItemStateManager; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.spi.Name; import org.apache.jackrabbit.spi.commons.name.NameConstants; import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl; -import org.apache.jackrabbit.uuid.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -449,9 +447,8 @@ try { // check if the activity has any references in the workspaces NodeId nodeId = activity.getId(); - NodeReferencesId refId = new NodeReferencesId(nodeId); - if (stateMgr.hasNodeReferences(refId)) { - NodeReferences refs = stateMgr.getNodeReferences(refId); + if (stateMgr.hasNodeReferences(nodeId)) { + NodeReferences refs = stateMgr.getNodeReferences(nodeId); if (refs.hasReferences()) { throw new ReferentialIntegrityException("Unable to delete activity. still referenced."); } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java (working copy) @@ -43,7 +43,6 @@ import org.apache.jackrabbit.core.state.ItemStateListener; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.state.NodeState; import org.apache.jackrabbit.core.state.XAItemStateManager; import org.apache.jackrabbit.core.state.ISMLocking.ReadLock; @@ -362,12 +361,12 @@ /** * {@inheritDoc} */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { ChangeLog changeLog = ((XAItemStateManager) stateMgr).getChangeLog(); if (changeLog != null) { - return changeLog.get(id); + return changeLog.getReferencesTo(id); } return null; } @@ -375,10 +374,10 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { ChangeLog changeLog = ((XAItemStateManager) stateMgr).getChangeLog(); if (changeLog != null) { - return changeLog.get(id) != null; + return changeLog.getReferencesTo(id) != null; } return false; } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java (working copy) @@ -27,7 +27,6 @@ import org.apache.jackrabbit.core.state.ItemStateListener; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.core.virtual.VirtualItemStateProvider; import org.apache.jackrabbit.core.virtual.VirtualNodeState; import org.apache.jackrabbit.core.virtual.VirtualPropertyState; @@ -130,7 +129,7 @@ /** * @inheritDoc */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { return stateMgr.getNodeReferences(id); } @@ -138,7 +137,7 @@ /** * @inheritDoc */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { return stateMgr.hasNodeReferences(id); } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/ChangeLogBasedHierarchyMgr.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/ChangeLogBasedHierarchyMgr.java (revision 793175) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/ChangeLogBasedHierarchyMgr.java (working copy) @@ -27,7 +27,6 @@ import org.apache.jackrabbit.core.state.ItemStateManager; import org.apache.jackrabbit.core.state.NoSuchItemStateException; import org.apache.jackrabbit.core.state.NodeReferences; -import org.apache.jackrabbit.core.id.NodeReferencesId; import org.apache.jackrabbit.spi.Path; import org.apache.jackrabbit.spi.Name; @@ -169,7 +168,7 @@ /** * Always throws a {@link UnsupportedOperationException}. */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { throw new UnsupportedOperationException(); } @@ -177,7 +176,7 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { return false; } } @@ -239,7 +238,7 @@ /** * Always throws a {@link UnsupportedOperationException}. */ - public NodeReferences getNodeReferences(NodeReferencesId id) + public NodeReferences getNodeReferences(NodeId id) throws NoSuchItemStateException, ItemStateException { throw new UnsupportedOperationException(); } @@ -247,7 +246,7 @@ /** * {@inheritDoc} */ - public boolean hasNodeReferences(NodeReferencesId id) { + public boolean hasNodeReferences(NodeId id) { return false; } } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeReferencesId.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeReferencesId.java (revision 793106) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/id/NodeReferencesId.java (working copy) @@ -1,106 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jackrabbit.core.id; - -import java.io.Serializable; - -/** - * Identifies a NodeReferences object. - */ -public class NodeReferencesId implements Serializable { - - /** Serialization UID of this class. */ - static final long serialVersionUID = -3819311769214730025L; - - /** - * The id of the target node. - */ - private final NodeId targetId; - - /** - * Creates a new instance of this class. Takes the id of the target node - * as parameter. - * - * @param targetId id of target node - * @throws IllegalArgumentException if targetId is null. - */ - public NodeReferencesId(NodeId targetId) { - if (targetId == null) { - throw new IllegalArgumentException("targetId must not be null"); - } - this.targetId = targetId; - } - - /** - * Returns the id of the target node. - * - * @return the id of the target node. - */ - public NodeId getTargetId() { - return targetId; - } - - /** - * Returns a NodeReferencesId holding the value of the specified - * string. The string must be in the format returned by the - * NodeReferencesId.toString() method. - * - * @param s a String containing the NodeReferencesId - * representation to be parsed. - * @return the NodeReferencesId represented by the argument - * @throws IllegalArgumentException if the specified string can not be parsed - * as a NodeReferencesId. - * @see #toString() - */ - public static NodeReferencesId valueOf(String s) throws IllegalArgumentException { - if (s == null) { - throw new IllegalArgumentException("invalid NodeReferencesId literal"); - } - return new NodeReferencesId(NodeId.valueOf(s)); - } - - /** - * Returns the same as this.getTargetId().toString(). - * - * @return the same as this.getTargetId().toString(). - */ - public String toString() { - return targetId.toString(); - } - - /** - * Returns the same as this.getTargetId().hashCode(). - * - * @return the same as this.getTargetId().hashCode(). - */ - public int hashCode() { - return targetId.hashCode(); - } - - /** - * @inheritDoc - */ - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NodeReferencesId) { - return targetId.equals(((NodeReferencesId) obj).targetId); - } - return false; - } -}