diff --git a/source/java/org/alfresco/repo/avm/AVMNodeImpl.java b/source/java/org/alfresco/repo/avm/AVMNodeImpl.java index 50b8d26584..45516440f9 100644 --- a/source/java/org/alfresco/repo/avm/AVMNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/AVMNodeImpl.java @@ -366,6 +366,13 @@ public abstract class AVMNodeImpl implements AVMNode, Serializable fAspects = new HashSet(other.getAspects()); } + protected void copyCreationAndOwnerBasicAttributes(AVMNode other) + { + fBasicAttributes.setCreateDate(other.getBasicAttributes().getCreateDate()); + fBasicAttributes.setCreator(other.getBasicAttributes().getCreator()); + fBasicAttributes.setOwner(other.getBasicAttributes().getOwner()); + } + protected void copyACLs(AVMNode other, Long parentAcl, ACLCopyMode mode) { DbAccessControlList acl = other.getAcl(); @@ -384,6 +391,7 @@ public abstract class AVMNodeImpl implements AVMNode, Serializable copyAspects(other); copyACLs(other, parentAcl, ACLCopyMode.COPY); copyProperties(other); + copyCreationAndOwnerBasicAttributes(other); } /** diff --git a/source/java/org/alfresco/repo/avm/BasicAttributes.java b/source/java/org/alfresco/repo/avm/BasicAttributes.java index dbd1e81226..5336e97ecf 100644 --- a/source/java/org/alfresco/repo/avm/BasicAttributes.java +++ b/source/java/org/alfresco/repo/avm/BasicAttributes.java @@ -7,7 +7,7 @@ package org.alfresco.repo.avm; * Ownership, timestamps, later perhaps ACLs * @author britt */ -interface BasicAttributes +public interface BasicAttributes { /** * Set the creator of the node. diff --git a/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java b/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java index 0209f01eeb..1b7839e2ae 100644 --- a/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java @@ -67,7 +67,8 @@ public class DeletedNodeImpl extends AVMNodeImpl implements DeletedNode AVMDAOs.Instance().fAVMNodeDAO.flush(); copyProperties(other); copyAspects(other); - copyACLs(other, parentAcl, mode); + copyACLs(other, parentAcl, mode); + copyCreationAndOwnerBasicAttributes(other); } /** diff --git a/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java b/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java index b6cf33cc0e..0d1ad885cc 100644 --- a/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java @@ -116,6 +116,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec copyProperties(toCopy); copyACLs(toCopy, parentAcl, mode); copyAspects(toCopy); + copyCreationAndOwnerBasicAttributes(toCopy); } else { @@ -131,7 +132,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec } else { - // TODO: Will not pick up changes if we start with no permission on teh terget node - may need + // TODO: Will not pick up changes if we start with no permission on the target node - may need // to add setAcl(DbAccessControlListImpl.createLayeredAcl(null)); } @@ -186,6 +187,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec copyProperties(other); copyAspects(other); copyACLs(other, parentAcl, mode); + copyCreationAndOwnerBasicAttributes(other); } /** @@ -222,6 +224,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec copyProperties(other); copyAspects(other); copyACLs(other, parentAcl, mode); + copyCreationAndOwnerBasicAttributes(other); } /** @@ -258,6 +261,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec copyProperties(dir); copyAspects(dir); copyACLs(dir, inheritedAcl, mode); + copyCreationAndOwnerBasicAttributes(dir); } /** @@ -768,6 +772,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec AVMDAOs.Instance().fAVMNodeDAO.flush(); ghost.setAncestor(child); ghost.setDeletedType(child.getType()); + ghost.copyCreationAndOwnerBasicAttributes(child); this.putChild(name, ghost); } else diff --git a/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java b/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java index 01e8fe52c5..a48e6be5ea 100644 --- a/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java @@ -75,6 +75,7 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode copyProperties(other); copyAspects(other); copyACLs(other, parentAcl, mode); + copyCreationAndOwnerBasicAttributes(other); } /** diff --git a/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java b/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java index f0596f1e5b..073d41f872 100644 --- a/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java @@ -89,6 +89,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory copyProperties(other); copyAspects(other); copyACLs(other, parentAcl, mode); + copyCreationAndOwnerBasicAttributes(other); } /** @@ -277,6 +278,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory AVMDAOs.Instance().fAVMNodeDAO.flush(); ghost.setAncestor(child); ghost.setDeletedType(child.getType()); + ghost.copyCreationAndOwnerBasicAttributes(child); putChild(name, ghost); } else diff --git a/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java b/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java index 80a6fc9b7c..bef0408b1b 100644 --- a/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java @@ -103,6 +103,7 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode copyProperties(other); copyAspects(other); copyACLs(other, parentAcl, mode); + copyCreationAndOwnerBasicAttributes(other); } // TODO Is there a reason for passing all these parameters instead