diff --git a/config/alfresco/extension/ldap-synchronisation-context.xml.sample b/config/alfresco/extension/ldap-synchronisation-context.xml.sample
index d61cb0b408..5c2845ecb7 100644
--- a/config/alfresco/extension/ldap-synchronisation-context.xml.sample
+++ b/config/alfresco/extension/ldap-synchronisation-context.xml.sample
@@ -73,7 +73,7 @@
-->
- ${ldap.synchronisation.userIdAttributeName]
+ ${ldap.synchronisation.userIdAttributeName}
diff --git a/config/alfresco/extension/replicating-content-services-context.xml.sample b/config/alfresco/extension/replicating-content-services-context.xml.sample
index 40a39b7d92..33a68cfa76 100644
--- a/config/alfresco/extension/replicating-content-services-context.xml.sample
+++ b/config/alfresco/extension/replicating-content-services-context.xml.sample
@@ -7,80 +7,34 @@
If you include this file, please ensure that you review the sample
beans contained here.
-->
-
-
+
+
- ${dir.contentstore}/../backups/alfresco
+ /var/alfresco/content-store
-
-
-
-
-
-
-
-
-
-
+
+
+ /share/alfresco/content-store
+
-
-
-
-
-
- org.alfresco.repo.content.replication.ContentStoreReplicator$ContentStoreReplicatorJob
-
-
-
-
-
-
-
-
-
-
-
- 0 0 03 * * ?
-
-
-
-
-
+
-
+
-
-
-
+
-
- false
+ true
-
- false
+ true
-
-
-
-
-
-
diff --git a/config/alfresco/public-services-security-context.xml b/config/alfresco/public-services-security-context.xml
index 6e0b4cc6d3..b4808de92f 100644
--- a/config/alfresco/public-services-security-context.xml
+++ b/config/alfresco/public-services-security-context.xml
@@ -349,10 +349,10 @@
org.alfresco.service.cmr.repository.NodeService.setProperties=ACL_NODE.0.sys:base.WriteProperties
org.alfresco.service.cmr.repository.NodeService.setProperty=ACL_NODE.0.sys:base.WriteProperties
org.alfresco.service.cmr.repository.NodeService.removeProperty=ACL_NODE.0.sys:base.WriteProperties
- org.alfresco.service.cmr.repository.NodeService.getParentAssocs=ACL_NODE.0.sys:base.ReadProperties,AFTER_ACL_PARENT.sys:base.ReadProperties
+ org.alfresco.service.cmr.repository.NodeService.getParentAssocs=ACL_NODE.0.sys:base.ReadProperties
org.alfresco.service.cmr.repository.NodeService.getChildAssocs=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties
org.alfresco.service.cmr.repository.NodeService.getChildByName=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties
- org.alfresco.service.cmr.repository.NodeService.getPrimaryParent=ACL_NODE.0.sys:base.ReadProperties,AFTER_ACL_PARENT.sys:base.ReadProperties
+ org.alfresco.service.cmr.repository.NodeService.getPrimaryParent=ACL_NODE.0.sys:base.ReadProperties
org.alfresco.service.cmr.repository.NodeService.createAssociation=ROLE_AUTHENTICATED
org.alfresco.service.cmr.repository.NodeService.removeAssociation=ROLE_AUTHENTICATED
org.alfresco.service.cmr.repository.NodeService.getTargetAssocs=ROLE_AUTHENTICATED
diff --git a/source/java/org/alfresco/filesys/ftp/FTPSrvSession.java b/source/java/org/alfresco/filesys/ftp/FTPSrvSession.java
index d49062f6b6..437e62f97b 100644
--- a/source/java/org/alfresco/filesys/ftp/FTPSrvSession.java
+++ b/source/java/org/alfresco/filesys/ftp/FTPSrvSession.java
@@ -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
{
diff --git a/source/java/org/alfresco/repo/jscript/ScriptNode.java b/source/java/org/alfresco/repo/jscript/ScriptNode.java
index 13af1c1e35..767b644f4c 100644
--- a/source/java/org/alfresco/repo/jscript/ScriptNode.java
+++ b/source/java/org/alfresco/repo/jscript/ScriptNode.java
@@ -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;
diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java
index 95c10f5113..98a76f4969 100644
--- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java
+++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java
@@ -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;
}
diff --git a/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java b/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java
index 31c943a4b6..071f6fa431 100644
--- a/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java
+++ b/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java
@@ -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
diff --git a/source/java/org/alfresco/repo/node/index/IndexRemoteTransactionTracker.java b/source/java/org/alfresco/repo/node/index/IndexRemoteTransactionTracker.java
index a9a544f0af..dce5c94ea1 100644
--- a/source/java/org/alfresco/repo/node/index/IndexRemoteTransactionTracker.java
+++ b/source/java/org/alfresco/repo/node/index/IndexRemoteTransactionTracker.java
@@ -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;
+ }
}
}
}
diff --git a/source/java/org/alfresco/repo/template/BaseContentNode.java b/source/java/org/alfresco/repo/template/BaseContentNode.java
index a09e851459..3537ef3fe4 100644
--- a/source/java/org/alfresco/repo/template/BaseContentNode.java
+++ b/source/java/org/alfresco/repo/template/BaseContentNode.java
@@ -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;
diff --git a/source/java/org/alfresco/service/cmr/repository/Path.java b/source/java/org/alfresco/service/cmr/repository/Path.java
index ad887733e6..1076b2be43 100644
--- a/source/java/org/alfresco/service/cmr/repository/Path.java
+++ b/source/java/org/alfresco/service/cmr/repository/Path.java
@@ -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, 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, 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();
}
}