Merged V3.2 to HEAD

17410: Merged V3.1 to V3.2
      16667: (record-only) Fix ETHREEOH-2477 - group-based perms (MT env)
      16883: Fix ETHREEOH-1544 - cannot paste an item, if cut from another web project (modifyLock errror)
      16918: Fix ETHREEOH-3053 - Deployment of non-stale file in a stale layered folder removes the file from FSR
      16947: (record-only) Temporarily comment-out testSubmitChangedAssets1 (intermittent permission failure)
      17162: Fix ETHREEOH-2850 - submitting delete of (web form) xml instance does not submit the associated deleted renditions
      17319: Fix ETHREEOH-3111 - ManageReviewTaskDialog (fix-up contributed patch)
   17418: Merged V3.1 to V3.2
      17141: Fix ETHREEOH-3088: Cut/Paste into self causes stack overflow
      17216: Fixed ETHREEOH-3170: DB errors on MSSQL with Snapshot Isolation enabled while CIFS copying
      17255: Fixed ETHREEOH-3180: Error appears when trying to search resources on Manage Task page
   17419: Fix for ETHREEOH-3296: Enterprise 3.X / Permissions Error When Cut & Paste on Sub-Folder
   17421: Review and tweaks of DB script port
   17423: Follow-on for ETHREEOH-3088
   17424: Missed check-in for ETHREEOH-3032 (CHK-10240)
   17437: ETHREEOH-2790 - OpenOffice-startup-context.xml needs to also initiate the connection to OpenOffice
   17441: Build fix: Fix AVM permission inheritance to match DM and fix common permission dao component
   17470: Fix for ETHREEOH-3350: Admin Console - Viewing user properties for user without home folder throws exception
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /alfresco/BRANCHES/V3.1:r16667,16883,16918,16947,17141,17162,17216,17255,17319
   Merged /alfresco/BRANCHES/V3.2:r17410,17418-17419,17421,17423-17424,17437,17441,17470


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18137 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2010-01-19 13:18:50 +00:00
parent 60a9007e8e
commit 6b8cf8d13b
26 changed files with 9924 additions and 9759 deletions

View File

@@ -77,14 +77,14 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
* The indirection version.
*/
private int fIndirectionVersion;
/**
* Default constructor.
* Default constructor.
*/
public LayeredDirectoryNodeImpl()
{
}
/**
* Make a new one from a specified indirection path.
*
@@ -96,24 +96,24 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
public LayeredDirectoryNodeImpl(String indirection, AVMStore store, AVMNode toCopy, Long parentAcl, ACLCopyMode mode)
{
super(store);
setLayerID(-1);
setIndirection(indirection);
setIndirectionVersion(-1);
setPrimaryIndirection(true);
setOpacity(false);
setLayerID(-1);
setIndirection(indirection);
setIndirectionVersion(-1);
setPrimaryIndirection(true);
setOpacity(false);
if (toCopy != null)
{
setVersionID(toCopy.getVersionID() + 1);
copyACLs(toCopy, parentAcl, mode);
copyCreationAndOwnerBasicAttributes(toCopy);
copyCreationAndOwnerBasicAttributes(toCopy);
}
else
{
setVersionID(1);
setVersionID(1);
if (indirection != null)
{
Lookup lookup = AVMRepository.GetInstance().lookupDirectory(-1, indirection);
@@ -126,7 +126,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
}
else
{
// TODO: Will not pick up changes if we start with no permission on the target 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));
}
@@ -142,13 +142,13 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
}
}
AVMDAOs.Instance().fAVMNodeDAO.save(this);
if (toCopy != null)
{
copyProperties(toCopy);
copyAspects(toCopy);
}
AVMDAOs.Instance().fAVMNodeDAO.save(this);
if (toCopy != null)
{
copyProperties(toCopy);
copyAspects(toCopy);
}
}
/**
@@ -162,23 +162,23 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
public LayeredDirectoryNodeImpl(LayeredDirectoryNode other, AVMStore repos, Lookup lookup, boolean copyAll, Long parentAcl, ACLCopyMode mode)
{
super(repos);
setLayerID(-1);
setIndirection(other.getIndirection());
setIndirectionVersion(-1);
setPrimaryIndirection(other.getPrimaryIndirection());
setOpacity(other.getOpacity());
setVersionID(other.getVersionID() + 1);
copyACLs(other, parentAcl, mode);
copyCreationAndOwnerBasicAttributes(other);
setLayerID(-1);
setIndirection(other.getIndirection());
setIndirectionVersion(-1);
setPrimaryIndirection(other.getPrimaryIndirection());
setOpacity(other.getOpacity());
setVersionID(other.getVersionID() + 1);
copyACLs(other, parentAcl, mode);
copyCreationAndOwnerBasicAttributes(other);
AVMDAOs.Instance().fAVMNodeDAO.save(this);
copyProperties(other);
copyAspects(other);
copyProperties(other);
copyAspects(other);
Map<String, AVMNode> children = null;
if (copyAll)
{
@@ -209,23 +209,23 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
public LayeredDirectoryNodeImpl(PlainDirectoryNode other, AVMStore store, Lookup lPath, boolean copyContents, Long parentAcl, ACLCopyMode mode)
{
super(store);
setLayerID(-1);
setIndirection(null);
setIndirectionVersion(-1);
setPrimaryIndirection(false);
setOpacity(false);
setVersionID(other.getVersionID() + 1);
copyACLs(other, parentAcl, mode);
copyCreationAndOwnerBasicAttributes(other);
setLayerID(-1);
setIndirection(null);
setIndirectionVersion(-1);
setPrimaryIndirection(false);
setOpacity(false);
setVersionID(other.getVersionID() + 1);
copyACLs(other, parentAcl, mode);
copyCreationAndOwnerBasicAttributes(other);
AVMDAOs.Instance().fAVMNodeDAO.save(this);
copyProperties(other);
copyAspects(other);
copyProperties(other);
copyAspects(other);
if (copyContents)
{
for (ChildEntry child : AVMDAOs.Instance().fChildEntryDAO.getByParent(other, null))
@@ -253,23 +253,23 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
public LayeredDirectoryNodeImpl(DirectoryNode dir, AVMStore store, Lookup srcLookup, String name, Long inheritedAcl, ACLCopyMode mode)
{
super(store);
setLayerID(-1);
setIndirection(srcLookup.getIndirectionPath() + "/" + name);
setIndirectionVersion(-1);
setPrimaryIndirection(true);
setOpacity(false);
setLayerID(-1);
setIndirection(srcLookup.getIndirectionPath() + "/" + name);
setIndirectionVersion(-1);
setPrimaryIndirection(true);
setOpacity(false);
setVersionID(dir.getVersionID() + 1);
copyACLs(dir, inheritedAcl, mode);
copyCreationAndOwnerBasicAttributes(dir);
copyACLs(dir, inheritedAcl, mode);
copyCreationAndOwnerBasicAttributes(dir);
AVMDAOs.Instance().fAVMNodeDAO.save(this);
copyProperties(dir);
copyAspects(dir);
copyProperties(dir);
copyAspects(dir);
Map<String, AVMNode> children = dir.getListing(srcLookup, true);
for (Map.Entry<String, AVMNode> child : children.entrySet())
{
@@ -319,9 +319,9 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
*/
public String getUnderlying(Lookup lPath)
{
if (getPrimaryIndirection())
if (getPrimaryIndirection())
{
return getIndirection();
return getIndirection();
}
return lPath.getCurrentIndirection();
}
@@ -339,9 +339,9 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
{
return -1;
}
if (getPrimaryIndirection())
if (getPrimaryIndirection())
{
return getIndirectionVersion();
return getIndirectionVersion();
}
return lPath.getCurrentIndirectionVersion();
}
@@ -427,7 +427,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
ChildEntry entry = new ChildEntryImpl(key, node);
AVMDAOs.Instance().fChildEntryDAO.save(entry);
}
/**
* Get a listing of the virtual contents of this directory.
*
@@ -451,7 +451,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
{
// Get the base listing from the thing we indirect to.
Map<String, AVMNode> listing = new HashMap<String, AVMNode>();
if (!getOpacity())
if (!getOpacity())
{
Lookup lookup = AVMRepository.GetInstance().lookupDirectory(getUnderlyingVersion(lPath), getUnderlying(lPath));
if (lookup != null)
@@ -463,7 +463,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
if (entry.getValue().getType() == AVMNodeType.LAYERED_DIRECTORY ||
entry.getValue().getType() == AVMNodeType.PLAIN_DIRECTORY)
{
if (!AVMRepository.GetInstance().can(lookup.getAVMStore(), entry.getValue(), PermissionService.READ_CHILDREN, false))
if (!AVMRepository.GetInstance().can(lookup.getAVMStore(), entry.getValue(), PermissionService.READ_CHILDREN, false))
{
continue;
}
@@ -477,7 +477,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
if (entry.getChild().getType() == AVMNodeType.LAYERED_DIRECTORY ||
entry.getChild().getType() == AVMNodeType.PLAIN_DIRECTORY)
{
if (!AVMRepository.GetInstance().can(lPath.getAVMStore(), entry.getChild(), PermissionService.READ_CHILDREN, lPath.getDirectlyContained()))
if (!AVMRepository.GetInstance().can(lPath.getAVMStore(), entry.getChild(), PermissionService.READ_CHILDREN, lPath.getDirectlyContained()))
{
continue;
}
@@ -509,9 +509,9 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
if (entry.getChild().getType() == AVMNodeType.LAYERED_DIRECTORY ||
entry.getChild().getType() == AVMNodeType.PLAIN_DIRECTORY)
{
if (!AVMRepository.GetInstance().can(lPath != null ? lPath.getAVMStore() : null,
entry.getChild(), PermissionService.READ_CHILDREN,
lPath != null ? lPath.getDirectlyContained() : false))
if (!AVMRepository.GetInstance().can(lPath != null ? lPath.getAVMStore() : null,
entry.getChild(), PermissionService.READ_CHILDREN,
lPath != null ? lPath.getDirectlyContained() : false))
{
continue;
}
@@ -536,14 +536,14 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
public SortedMap<String, AVMNodeDescriptor> getListingDirect(AVMNodeDescriptor dir, boolean includeDeleted)
{
List<ChildEntry> children = AVMDAOs.Instance().fChildEntryDAO.getByParent(this, null);
SortedMap<String, AVMNodeDescriptor> listing = new TreeMap<String, AVMNodeDescriptor>(String.CASE_INSENSITIVE_ORDER);
SortedMap<String, AVMNodeDescriptor> listing = new TreeMap<String, AVMNodeDescriptor>(String.CASE_INSENSITIVE_ORDER);
for (ChildEntry child : children)
{
AVMNode childNode = child.getChild();
if (childNode.getType() == AVMNodeType.LAYERED_DIRECTORY ||
childNode.getType() == AVMNodeType.PLAIN_DIRECTORY)
{
if (!AVMRepository.GetInstance().can(null, childNode, PermissionService.READ_CHILDREN, false))
if (!AVMRepository.GetInstance().can(null, childNode, PermissionService.READ_CHILDREN, false))
{
continue;
}
@@ -589,9 +589,9 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
{
throw new AVMBadArgumentException("Illegal null argument.");
}
SortedMap<String, AVMNodeDescriptor> baseListing = new TreeMap<String, AVMNodeDescriptor>(String.CASE_INSENSITIVE_ORDER);
SortedMap<String, AVMNodeDescriptor> baseListing = new TreeMap<String, AVMNodeDescriptor>(String.CASE_INSENSITIVE_ORDER);
// If we are not opaque, get the underlying base listing.
if (!getOpacity())
if (!getOpacity())
{
Lookup lookup = AVMRepository.GetInstance().lookupDirectory(-1, dir.getIndirection());
if (lookup != null)
@@ -603,7 +603,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
if (entry.getValue().getType() == AVMNodeType.LAYERED_DIRECTORY ||
entry.getValue().getType() == AVMNodeType.PLAIN_DIRECTORY)
{
if (!AVMRepository.GetInstance().can(null, entry.getValue(), PermissionService.READ_CHILDREN, false))
if (!AVMRepository.GetInstance().can(null, entry.getValue(), PermissionService.READ_CHILDREN, false))
{
continue;
}
@@ -621,7 +621,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
if (child.getChild().getType() == AVMNodeType.LAYERED_DIRECTORY ||
child.getChild().getType() == AVMNodeType.PLAIN_DIRECTORY)
{
if (!AVMRepository.GetInstance().can(null, child.getChild(), PermissionService.READ_CHILDREN, false))
if (!AVMRepository.GetInstance().can(null, child.getChild(), PermissionService.READ_CHILDREN, false))
{
continue;
}
@@ -685,7 +685,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
return result;
}
// Don't check our underlying directory if we are opaque.
if (getOpacity())
if (getOpacity())
{
return null;
}
@@ -735,7 +735,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
return desc;
}
// If we are opaque don't check underneath.
if (getOpacity())
if (getOpacity())
{
return null;
}
@@ -804,10 +804,12 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
ghost.setAncestor(child);
ghost.setDeletedType(child.getType());
ghost.copyCreationAndOwnerBasicAttributes(child);
ghost.copyCreationAndOwnerBasicAttributes(child);
ghost.copyAspects(child);
ghost.copyProperties(child);
AVMDAOs.Instance().fAVMNodeDAO.update(ghost);
this.putChild(name, ghost);
}
}
@@ -847,16 +849,16 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
checkReadOnly();
}
setIndirection(path);
setPrimaryIndirection(true);
setIndirection(path);
setPrimaryIndirection(true);
// Need to change the permission we point to ....
if (getIndirection() != null)
if (getIndirection() != null)
{
if ((getAcl() == null) || (getAcl().getAclType() == ACLType.LAYERED))
{
DbAccessControlList acl = null;
Lookup lookup = AVMRepository.GetInstance().lookupDirectory(-1, getIndirection());
Lookup lookup = AVMRepository.GetInstance().lookupDirectory(-1, getIndirection());
if (lookup != null)
{
DirectoryNode dir = (DirectoryNode) lookup.getCurrentNode();
@@ -905,7 +907,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
}
}
public void setAclAndInherit(LayeredDirectoryNode layeredDirectory, DbAccessControlList acl, String name)
public void setAclAndInherit(LayeredDirectoryNode layeredDirectory, DbAccessControlList acl, String name)
{
// Note ACLS may COW on next ACL change
layeredDirectory.setAcl(acl);
@@ -917,9 +919,9 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
{
AVMNode node = directChildren.get(key);
if (node instanceof LayeredDirectoryNode)
if (node instanceof LayeredDirectoryNode)
{
LayeredDirectoryNode childNode = (LayeredDirectoryNode) node;
LayeredDirectoryNode childNode = (LayeredDirectoryNode) node;
DbAccessControlList currentAcl = node.getAcl();
if (currentAcl == null)
{
@@ -944,9 +946,9 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
}
}
}
else if (node instanceof PlainFileNode)
else if (node instanceof PlainFileNode)
{
PlainFileNode childNode = (PlainFileNode) node;
PlainFileNode childNode = (PlainFileNode) node;
DbAccessControlList currentAcl = node.getAcl();
if (currentAcl == null)
{
@@ -1045,10 +1047,10 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
BasicAttributes attrs = getBasicAttributes();
String path = lPath.getRepresentedPath();
path = AVMNodeConverter.ExtendAVMPath(path, name);
int indirectionVersion = getUnderlyingVersion(lPath);
int indirectionVersion = getUnderlyingVersion(lPath);
String indirect = null;
if (getPrimaryIndirection())
if (getPrimaryIndirection())
{
indirect = getIndirection();
}
@@ -1056,9 +1058,9 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
{
indirect = AVMNodeConverter.ExtendAVMPath(lPath.getCurrentIndirection(), name);
}
return new AVMNodeDescriptor(path, name, AVMNodeType.LAYERED_DIRECTORY, attrs.getCreator(), attrs.getOwner(), attrs.getLastModifier(), attrs.getCreateDate(), attrs
.getModDate(), attrs.getAccessDate(), getId(), getGuid(), getVersionID(), indirect, indirectionVersion, getPrimaryIndirection(), getLayerID(), getOpacity(), -1, -1);
.getModDate(), attrs.getAccessDate(), getId(), getGuid(), getVersionID(), indirect, indirectionVersion, getPrimaryIndirection(), getLayerID(), getOpacity(), -1, -1);
}
/**
@@ -1074,8 +1076,8 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
String path = lPath.getRepresentedPath();
String name = path.substring(path.lastIndexOf("/") + 1);
return new AVMNodeDescriptor(path, name, AVMNodeType.LAYERED_DIRECTORY, attrs.getCreator(), attrs.getOwner(), attrs.getLastModifier(), attrs.getCreateDate(), attrs
.getModDate(), attrs.getAccessDate(), getId(), getGuid(), getVersionID(), getUnderlying(lPath), getUnderlyingVersion(lPath), getPrimaryIndirection(), getLayerID(),
getOpacity(), -1, -1);
.getModDate(), attrs.getAccessDate(), getId(), getGuid(), getVersionID(), getUnderlying(lPath), getUnderlyingVersion(lPath), getPrimaryIndirection(), getLayerID(),
getOpacity(), -1, -1);
}
/**
@@ -1095,10 +1097,10 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
String path = parentPath.endsWith("/") ? parentPath + name : parentPath + "/" + name;
String indirection = null;
int indirectionVersion = -1;
if (getPrimaryIndirection())
if (getPrimaryIndirection())
{
indirection = getIndirection();
indirectionVersion = getIndirectionVersion();
indirection = getIndirection();
indirectionVersion = getIndirectionVersion();
}
else
{
@@ -1106,7 +1108,7 @@ public class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements Layer
indirectionVersion = parentIndirectionVersion;
}
return new AVMNodeDescriptor(path, name, AVMNodeType.LAYERED_DIRECTORY, attrs.getCreator(), attrs.getOwner(), attrs.getLastModifier(), attrs.getCreateDate(), attrs
.getModDate(), attrs.getAccessDate(), getId(), getGuid(), getVersionID(), indirection, indirectionVersion, getPrimaryIndirection(), getLayerID(), getOpacity(), -1, -1);
.getModDate(), attrs.getAccessDate(), getId(), getGuid(), getVersionID(), indirection, indirectionVersion, getPrimaryIndirection(), getLayerID(), getOpacity(), -1, -1);
}
/**