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 = new PlainFileNodeImpl((PlainFileNode)srcNode, dstRepo);
|
||||||
}
|
}
|
||||||
dstNode.setVersionID(dstRepo.getNextVersionID());
|
// dstNode.setVersionID(dstRepo.getNextVersionID());
|
||||||
dstNode.setAncestor(srcNode);
|
dstNode.setAncestor(srcNode);
|
||||||
dirNode.putChild(name, dstNode);
|
dirNode.putChild(name, dstNode);
|
||||||
dirNode.updateModTime();
|
dirNode.updateModTime();
|
||||||
@@ -682,7 +682,7 @@ public class AVMRepository
|
|||||||
}
|
}
|
||||||
srcDir.removeChild(sPath, srcName);
|
srcDir.removeChild(sPath, srcName);
|
||||||
srcDir.updateModTime();
|
srcDir.updateModTime();
|
||||||
dstNode.setVersionID(dstRepo.getNextVersionID());
|
// dstNode.setVersionID(dstRepo.getNextVersionID());
|
||||||
if (child != null)
|
if (child != null)
|
||||||
{
|
{
|
||||||
dstNode.setAncestor(child);
|
dstNode.setAncestor(child);
|
||||||
|
@@ -71,6 +71,35 @@ import org.alfresco.util.Pair;
|
|||||||
*/
|
*/
|
||||||
public class AVMServiceTest extends AVMServiceTestBase
|
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.
|
* Test relinking of nodes to history.
|
||||||
*/
|
*/
|
||||||
|
@@ -232,7 +232,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
|||||||
{
|
{
|
||||||
newDir = new PlainDirectoryNodeImpl(this);
|
newDir = new PlainDirectoryNodeImpl(this);
|
||||||
}
|
}
|
||||||
newDir.setVersionID(getNextVersionID());
|
// newDir.setVersionID(getNextVersionID());
|
||||||
if (child != null)
|
if (child != null)
|
||||||
{
|
{
|
||||||
newDir.setAncestor(child);
|
newDir.setAncestor(child);
|
||||||
@@ -282,7 +282,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
|||||||
}
|
}
|
||||||
dir.updateModTime();
|
dir.updateModTime();
|
||||||
dir.putChild(name, newDir);
|
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);
|
throw new AVMExistsException("Child exists: " + name);
|
||||||
}
|
}
|
||||||
PlainFileNodeImpl file = new PlainFileNodeImpl(this);
|
PlainFileNodeImpl file = new PlainFileNodeImpl(this);
|
||||||
file.setVersionID(getNextVersionID());
|
// file.setVersionID(getNextVersionID());
|
||||||
dir.updateModTime();
|
dir.updateModTime();
|
||||||
dir.putChild(name, file);
|
dir.putChild(name, file);
|
||||||
if (child != null)
|
if (child != null)
|
||||||
@@ -340,7 +340,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
|||||||
throw new AVMExistsException("Child exists: " + name);
|
throw new AVMExistsException("Child exists: " + name);
|
||||||
}
|
}
|
||||||
PlainFileNodeImpl file = new PlainFileNodeImpl(this);
|
PlainFileNodeImpl file = new PlainFileNodeImpl(this);
|
||||||
file.setVersionID(getNextVersionID());
|
// file.setVersionID(getNextVersionID());
|
||||||
dir.updateModTime();
|
dir.updateModTime();
|
||||||
dir.putChild(name, file);
|
dir.putChild(name, file);
|
||||||
if (child != null)
|
if (child != null)
|
||||||
@@ -383,7 +383,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
|||||||
}
|
}
|
||||||
dir.updateModTime();
|
dir.updateModTime();
|
||||||
dir.putChild(name, newFile);
|
dir.putChild(name, newFile);
|
||||||
newFile.setVersionID(getNextVersionID());
|
// newFile.setVersionID(getNextVersionID());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -81,6 +81,14 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
|
|||||||
fIndirection = indirection;
|
fIndirection = indirection;
|
||||||
fPrimaryIndirection = true;
|
fPrimaryIndirection = true;
|
||||||
fOpacity = false;
|
fOpacity = false;
|
||||||
|
if (toCopy != null)
|
||||||
|
{
|
||||||
|
setVersionID(toCopy.getVersionID() + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setVersionID(1);
|
||||||
|
}
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
if (toCopy != null)
|
if (toCopy != null)
|
||||||
@@ -113,6 +121,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
|
|||||||
child.getChild());
|
child.getChild());
|
||||||
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
||||||
}
|
}
|
||||||
|
setVersionID(other.getVersionID() + 1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
copyProperties(other);
|
copyProperties(other);
|
||||||
copyAspects(other);
|
copyAspects(other);
|
||||||
@@ -148,6 +157,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
|
|||||||
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
setVersionID(other.getVersionID() + 1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
copyProperties(other);
|
copyProperties(other);
|
||||||
copyAspects(other);
|
copyAspects(other);
|
||||||
@@ -172,6 +182,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
|
|||||||
fPrimaryIndirection = true;
|
fPrimaryIndirection = true;
|
||||||
fLayerID = -1;
|
fLayerID = -1;
|
||||||
fOpacity = false;
|
fOpacity = false;
|
||||||
|
setVersionID(dir.getVersionID() + 1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
copyProperties(dir);
|
copyProperties(dir);
|
||||||
|
@@ -51,6 +51,7 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
|
|||||||
{
|
{
|
||||||
super(store.getAVMRepository().issueID(), store);
|
super(store.getAVMRepository().issueID(), store);
|
||||||
fIndirection = other.getIndirection();
|
fIndirection = other.getIndirection();
|
||||||
|
setVersionID(other.getVersionID() + 1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
copyProperties(other);
|
copyProperties(other);
|
||||||
@@ -67,6 +68,7 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
|
|||||||
{
|
{
|
||||||
super(store.getAVMRepository().issueID(), store);
|
super(store.getAVMRepository().issueID(), store);
|
||||||
fIndirection = indirection;
|
fIndirection = indirection;
|
||||||
|
setVersionID(1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
}
|
}
|
||||||
@@ -95,7 +97,8 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
|
|||||||
getContentData(lPath),
|
getContentData(lPath),
|
||||||
indirect.getProperties(),
|
indirect.getProperties(),
|
||||||
AVMDAOs.Instance().fAVMAspectNameDAO.get(indirect),
|
AVMDAOs.Instance().fAVMAspectNameDAO.get(indirect),
|
||||||
indirect.getAcl());
|
indirect.getAcl(),
|
||||||
|
getVersionID());
|
||||||
newMe.setAncestor(this);
|
newMe.setAncestor(this);
|
||||||
return newMe;
|
return newMe;
|
||||||
}
|
}
|
||||||
|
@@ -280,7 +280,7 @@ class Lookup
|
|||||||
if (fNeedsCopying)
|
if (fNeedsCopying)
|
||||||
{
|
{
|
||||||
node = node.copy(this);
|
node = node.copy(this);
|
||||||
node.setVersionID(fAVMStore.getNextVersionID());
|
// node.setVersionID(fAVMStore.getNextVersionID());
|
||||||
fComponents.get(fPosition).setNode(node);
|
fComponents.get(fPosition).setNode(node);
|
||||||
if (fPosition == 0)
|
if (fPosition == 0)
|
||||||
{
|
{
|
||||||
|
@@ -44,6 +44,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory
|
|||||||
public PlainDirectoryNodeImpl(AVMStore store)
|
public PlainDirectoryNodeImpl(AVMStore store)
|
||||||
{
|
{
|
||||||
super(store.getAVMRepository().issueID(), store);
|
super(store.getAVMRepository().issueID(), store);
|
||||||
|
setVersionID(1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
}
|
}
|
||||||
@@ -73,6 +74,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory
|
|||||||
child.getChild());
|
child.getChild());
|
||||||
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
AVMDAOs.Instance().fChildEntryDAO.save(newChild);
|
||||||
}
|
}
|
||||||
|
setVersionID(other.getVersionID() + 1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
copyProperties(other);
|
copyProperties(other);
|
||||||
copyAspects(other);
|
copyAspects(other);
|
||||||
|
@@ -73,7 +73,7 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
|
|||||||
public PlainFileNodeImpl(AVMStore store)
|
public PlainFileNodeImpl(AVMStore store)
|
||||||
{
|
{
|
||||||
super(store.getAVMRepository().issueID(), store);
|
super(store.getAVMRepository().issueID(), store);
|
||||||
// AVMContext.fgInstance.fAVMNodeDAO.flush();
|
setVersionID(1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
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
|
// The null is OK because the Lookup argument is only use by
|
||||||
// layered files.
|
// layered files.
|
||||||
setContentData(other.getContentData(null));
|
setContentData(other.getContentData(null));
|
||||||
|
setVersionID(other.getVersionID() + 1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
copyProperties(other);
|
copyProperties(other);
|
||||||
@@ -97,6 +98,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
|
|||||||
copyACLs(other);
|
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
|
* Construct a new one. This is called when a LayeredFileNode
|
||||||
* is copied.
|
* is copied.
|
||||||
@@ -109,11 +112,13 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
|
|||||||
ContentData content,
|
ContentData content,
|
||||||
Map<QName, PropertyValue> props,
|
Map<QName, PropertyValue> props,
|
||||||
List<AVMAspectName> aspects,
|
List<AVMAspectName> aspects,
|
||||||
DbAccessControlList acl)
|
DbAccessControlList acl,
|
||||||
|
int versionID)
|
||||||
{
|
{
|
||||||
super(store.getAVMRepository().issueID(), store);
|
super(store.getAVMRepository().issueID(), store);
|
||||||
setContentData(content);
|
setContentData(content);
|
||||||
setBasicAttributes(attrs);
|
setBasicAttributes(attrs);
|
||||||
|
setVersionID(versionID + 1);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
AVMDAOs.Instance().fAVMNodeDAO.save(this);
|
||||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||||
setProperties(props);
|
setProperties(props);
|
||||||
|
Reference in New Issue
Block a user