Merged V2.1 to HEAD

6846: used ] instead of } in ${ldap.synchronisation.userIdAttributeName]
   6856: Fixed 2 NPEs, one reported by MIT and one found by Jan (WCM-835)
   6859: Truncate an existing file when uploading via FTP. WCM-836.
   6869: Removed temporary files and folders from deploy-installer project
   6870: Updated ignore property
   6875: Fix for AWC-1605
   6878: Fix for AWC-1587
   6880: Fix for French language pack - locked_user message
   6883: Fix for AWC-1565
   6884: Relax trhe permissions required to get the parent links from a child node
   6891: Fix for AR-1781 and AR-1782 (requires CHK-1451)
   6892: Fixed AR-1777: Node status not updated for addition and removal of secondary associations (affects index tracking)
   6893: Sample for replicating content store sample
   6896: Added JVM shutdown check into inner loop to get faster breakout in the event of shutdown.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6899 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2007-10-02 16:10:58 +00:00
parent 19d195c423
commit 575c51a697
10 changed files with 49 additions and 83 deletions

View File

@@ -2339,6 +2339,10 @@ public class FTPSrvSession extends SrvSession implements Runnable
// Overwrite the existing file
netFile = disk.openFile(this, tree, params);
// Truncate the existing file
netFile.truncateFile( 0L);
}
else
{

View File

@@ -704,7 +704,8 @@ public class ScriptNode implements Serializable, Scopeable
{
if (displayPath == null)
{
displayPath = this.nodeService.getPath(this.nodeRef).toDisplayPath(this.nodeService);
displayPath = this.nodeService.getPath(this.nodeRef).toDisplayPath(
this.nodeService, this.services.getPermissionService());
}
return displayPath;

View File

@@ -832,6 +832,9 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
// Invoke policy behaviours
invokeOnCreateChildAssociation(assocRef, false);
// update the node status
nodeDaoService.recordChangeId(childNodeRef);
return assoc.getChildAssocRef();
}
@@ -872,6 +875,12 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
{
deleteNode(primaryAssocRef.getChildRef());
}
else
{
// The cascade delete will update the node status, but just a plain assoc deletion will not
// Update the node status
nodeDaoService.recordChangeId(childRef);
}
// done
}
@@ -888,6 +897,8 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
if (deleted)
{
invokeOnDeleteChildAssociation(childAssocRef);
// Update the node status
nodeDaoService.recordChangeId(childNode.getNodeRef());
}
// Done
return deleted;
@@ -914,6 +925,8 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
// Delete the secondary association
nodeDaoService.deleteChildAssoc(assoc, false);
invokeOnDeleteChildAssociation(childAssocRef);
// Update the node status
nodeDaoService.recordChangeId(childNode.getNodeRef());
// Done
return true;
}

View File

@@ -1069,7 +1069,7 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
if (parentAssoc == null)
{
// The cache is out of date, so just repopulate it
parentAssoc = null;
parentAssocs = null;
break;
}
else

View File

@@ -100,6 +100,11 @@ public class IndexRemoteTransactionTracker extends AbstractReindexComponent
long txnId = txn.getId();
reindexTransaction(txnId);
currentTxnId = txnId;
// break out if the VM is shutting down
if (isShuttingDown())
{
break;
}
}
}
}

View File

@@ -35,7 +35,6 @@ import java.util.Set;
import org.alfresco.model.ApplicationModel;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
@@ -259,14 +258,8 @@ public abstract class BaseContentNode implements TemplateContent
{
if (displayPath == null)
{
try
{
displayPath = this.services.getNodeService().getPath(getNodeRef()).toDisplayPath(this.services.getNodeService());
}
catch (AccessDeniedException err)
{
displayPath = "";
}
displayPath = this.services.getNodeService().getPath(getNodeRef()).toDisplayPath(
services.getNodeService(), services.getPermissionService());
}
return displayPath;

View File

@@ -30,6 +30,8 @@ import java.util.LinkedList;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.service.cmr.security.AccessStatus;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.NamespacePrefixResolver;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.ISO9075;
@@ -193,7 +195,7 @@ public final class Path implements Iterable<Path.Element>, Serializable
*
* @return human readable form of the Path excluding the final element
*/
public String toDisplayPath(NodeService nodeService)
public String toDisplayPath(NodeService nodeService, PermissionService permissionService)
{
StringBuilder buf = new StringBuilder(64);
@@ -207,22 +209,16 @@ public final class Path implements Iterable<Path.Element>, Serializable
if (elementRef.getParentRef() != null)
{
Serializable nameProp = null;
try
if (permissionService.hasPermission(
elementRef.getChildRef(), PermissionService.READ) == AccessStatus.ALLOWED)
{
nameProp = nodeService.getProperty(elementRef.getChildRef(), ContentModel.PROP_NAME);
}
catch (AccessDeniedException err)
{
// unable to access this property on the path - so we cannot display it's name
}
if (nameProp != null)
{
// use the name property if we find it
// use the name property if we are allowed access to it
elementString = nameProp.toString();
}
else
{
// revert to using QName if not found
// revert to using QName if not
elementString = elementRef.getQName().getLocalName();
}
}