mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
AVM nodes get a useful version id.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4727 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -447,7 +447,7 @@ public class AVMRepository
|
||||
{
|
||||
dstNode = new PlainFileNodeImpl((PlainFileNode)srcNode, dstRepo);
|
||||
}
|
||||
dstNode.setVersionID(dstRepo.getNextVersionID());
|
||||
// dstNode.setVersionID(dstRepo.getNextVersionID());
|
||||
dstNode.setAncestor(srcNode);
|
||||
dirNode.putChild(name, dstNode);
|
||||
dirNode.updateModTime();
|
||||
@@ -682,7 +682,7 @@ public class AVMRepository
|
||||
}
|
||||
srcDir.removeChild(sPath, srcName);
|
||||
srcDir.updateModTime();
|
||||
dstNode.setVersionID(dstRepo.getNextVersionID());
|
||||
// dstNode.setVersionID(dstRepo.getNextVersionID());
|
||||
if (child != null)
|
||||
{
|
||||
dstNode.setAncestor(child);
|
||||
|
@@ -71,6 +71,35 @@ import org.alfresco.util.Pair;
|
||||
*/
|
||||
public class AVMServiceTest extends AVMServiceTestBase
|
||||
{
|
||||
/**
|
||||
* Test version numbering.
|
||||
*/
|
||||
public void testVersionNumbering()
|
||||
{
|
||||
try
|
||||
{
|
||||
setupBasicTree();
|
||||
fService.getFileOutputStream("main:/a/b/c/foo").close();
|
||||
AVMNodeDescriptor desc = fService.lookup(-1, "main:/a/b/c/foo");
|
||||
assertEquals(2, desc.getVersionID());
|
||||
desc = fService.lookup(-1, "main:/a/b");
|
||||
assertEquals(2, desc.getVersionID());
|
||||
fService.createSnapshot("main", null, null);
|
||||
fService.createLayeredDirectory("main:/a", "main:/", "layer");
|
||||
fService.createSnapshot("main", null, null);
|
||||
fService.getFileOutputStream("main:/layer/b/c/bar").close();
|
||||
desc = fService.lookup(-1, "main:/layer/b/c/bar");
|
||||
assertEquals(2, desc.getVersionID());
|
||||
desc = fService.lookup(-1, "main:/layer/b/c");
|
||||
assertEquals(3, desc.getVersionID());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
fail();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test relinking of nodes to history.
|
||||
*/
|
||||
|
@@ -232,7 +232,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
{
|
||||
newDir = new PlainDirectoryNodeImpl(this);
|
||||
}
|
||||
newDir.setVersionID(getNextVersionID());
|
||||
// newDir.setVersionID(getNextVersionID());
|
||||
if (child != null)
|
||||
{
|
||||
newDir.setAncestor(child);
|
||||
@@ -282,7 +282,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
}
|
||||
dir.updateModTime();
|
||||
dir.putChild(name, newDir);
|
||||
newDir.setVersionID(getNextVersionID());
|
||||
// newDir.setVersionID(getNextVersionID());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -305,7 +305,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
throw new AVMExistsException("Child exists: " + name);
|
||||
}
|
||||
PlainFileNodeImpl file = new PlainFileNodeImpl(this);
|
||||
file.setVersionID(getNextVersionID());
|
||||
// file.setVersionID(getNextVersionID());
|
||||
dir.updateModTime();
|
||||
dir.putChild(name, file);
|
||||
if (child != null)
|
||||
@@ -340,7 +340,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
throw new AVMExistsException("Child exists: " + name);
|
||||
}
|
||||
PlainFileNodeImpl file = new PlainFileNodeImpl(this);
|
||||
file.setVersionID(getNextVersionID());
|
||||
// file.setVersionID(getNextVersionID());
|
||||
dir.updateModTime();
|
||||
dir.putChild(name, file);
|
||||
if (child != null)
|
||||
@@ -383,7 +383,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
}
|
||||
dir.updateModTime();
|
||||
dir.putChild(name, newFile);
|
||||
newFile.setVersionID(getNextVersionID());
|
||||
// newFile.setVersionID(getNextVersionID());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -81,6 +81,14 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
|
||||
fIndirection = indirection;
|
||||
fPrimaryIndirection = true;
|
||||
fOpacity = false;
|
||||
if (toCopy != null)
|
||||
{
|
||||
setVersionID(toCopy.getVersionID() + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
setVersionID(1);
|
||||
}
|
||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
if (toCopy != null)
|
||||
@@ -113,6 +121,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
|
||||
child.getChild());
|
||||
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
||||
}
|
||||
setVersionID(other.getVersionID() + 1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
copyProperties(other);
|
||||
copyAspects(other);
|
||||
@@ -148,6 +157,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
|
||||
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
||||
}
|
||||
}
|
||||
setVersionID(other.getVersionID() + 1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
copyProperties(other);
|
||||
copyAspects(other);
|
||||
@@ -172,6 +182,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
|
||||
fPrimaryIndirection = true;
|
||||
fLayerID = -1;
|
||||
fOpacity = false;
|
||||
setVersionID(dir.getVersionID() + 1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
copyProperties(dir);
|
||||
|
@@ -51,6 +51,7 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
|
||||
{
|
||||
super(store.getAVMRepository().issueID(), store);
|
||||
fIndirection = other.getIndirection();
|
||||
setVersionID(other.getVersionID() + 1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
copyProperties(other);
|
||||
@@ -67,6 +68,7 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
|
||||
{
|
||||
super(store.getAVMRepository().issueID(), store);
|
||||
fIndirection = indirection;
|
||||
setVersionID(1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
}
|
||||
@@ -95,7 +97,8 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
|
||||
getContentData(lPath),
|
||||
indirect.getProperties(),
|
||||
AVMDAOs.Instance().fAVMAspectNameDAO.get(indirect),
|
||||
indirect.getAcl());
|
||||
indirect.getAcl(),
|
||||
getVersionID());
|
||||
newMe.setAncestor(this);
|
||||
return newMe;
|
||||
}
|
||||
|
@@ -280,7 +280,7 @@ class Lookup
|
||||
if (fNeedsCopying)
|
||||
{
|
||||
node = node.copy(this);
|
||||
node.setVersionID(fAVMStore.getNextVersionID());
|
||||
// node.setVersionID(fAVMStore.getNextVersionID());
|
||||
fComponents.get(fPosition).setNode(node);
|
||||
if (fPosition == 0)
|
||||
{
|
||||
|
@@ -44,6 +44,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory
|
||||
public PlainDirectoryNodeImpl(AVMStore store)
|
||||
{
|
||||
super(store.getAVMRepository().issueID(), store);
|
||||
setVersionID(1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
}
|
||||
@@ -73,6 +74,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory
|
||||
child.getChild());
|
||||
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
||||
}
|
||||
setVersionID(other.getVersionID() + 1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
copyProperties(other);
|
||||
copyAspects(other);
|
||||
|
@@ -73,7 +73,7 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
|
||||
public PlainFileNodeImpl(AVMStore store)
|
||||
{
|
||||
super(store.getAVMRepository().issueID(), store);
|
||||
// AVMContext.fgInstance.fAVMNodeDAO.flush();
|
||||
setVersionID(1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
}
|
||||
@@ -90,6 +90,7 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
|
||||
// The null is OK because the Lookup argument is only use by
|
||||
// layered files.
|
||||
setContentData(other.getContentData(null));
|
||||
setVersionID(other.getVersionID() + 1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
copyProperties(other);
|
||||
@@ -97,6 +98,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
|
||||
copyACLs(other);
|
||||
}
|
||||
|
||||
// TODO Is there a reason for passing all these parameters instead
|
||||
// of just the LayeredFileNode?
|
||||
/**
|
||||
* Construct a new one. This is called when a LayeredFileNode
|
||||
* is copied.
|
||||
@@ -109,11 +112,13 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
|
||||
ContentData content,
|
||||
Map<QName, PropertyValue> props,
|
||||
List<AVMAspectName> aspects,
|
||||
DbAccessControlList acl)
|
||||
DbAccessControlList acl,
|
||||
int versionID)
|
||||
{
|
||||
super(store.getAVMRepository().issueID(), store);
|
||||
setContentData(content);
|
||||
setBasicAttributes(attrs);
|
||||
setVersionID(versionID + 1);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
setProperties(props);
|
||||
|
Reference in New Issue
Block a user