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:
Britt Park
2007-01-04 14:59:29 +00:00
parent fcb36d4c4c
commit 0a76193084
8 changed files with 61 additions and 11 deletions

View File

@@ -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);

View File

@@ -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.
*/

View File

@@ -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());
}
/**

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -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);