Merged V2.1 to HEAD

6535: adding in handlers for renames and deletes of webforms to update web project configurations.
   6536: fix to monthpicker.
   6537: Cluster sample config for ticketsCache defaults to replicating puts
   6538: Invite web users wizard was not correctly initialising
   6539: AWC-1474 - Email Space Users dialog - if no email recipients then show message
   6540: Fixed remote classpath check for SDK projects
   6541: AR-1544: Inbound Rules Being Fired on Name Property Update
   6542: Fix for AWC-1216 - changed NavigationBean to spot when CIFS server is disabled (as the method has changed in repo)
   6543: AR-1623: WebServices authentication errors during concurrent load test
   6544: AWC-1253: AddContent action should be externally configurable/overridable
   6545: Fixed AR-1586: Nicer message when installing older module or duplicate module
   6546: AWC-1301: Access Denied viewing details of content with association
   6547: AWC-1499: It is impossible to remove 'Complianceable' aspect with the help of Run action
   6548: Missing file ... should fix build issues
   6549: Missed file .. fixed build issue
   6550: AWC-1092: sorting by version number in version history is alpha, not numeric
   6551: AWC-1217: Cannot differentiate between two users with same name in user picker search results
   6552: Fixed AR-1572: Export of ML-enabled documents can now be imported
   6553: Removed tabs
   6554: Fixed handling of SC_NOT_FOUND message
   6555: Fixed AR-1627: Removed ability to flush transaction resources on demand


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6744 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley 2007-09-11 00:52:59 +00:00
parent ab0e9db542
commit 652b9406db
14 changed files with 276 additions and 109 deletions

View File

@ -488,10 +488,10 @@
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicatePuts = false,
properties="replicatePuts = true,
replicateUpdates = true,
replicateRemovals = true,
replicateUpdatesViaCopy = false,
replicateUpdatesViaCopy = true,
replicateAsynchronously = false"/>
</cache>

View File

@ -364,18 +364,15 @@
<aspect name="cm:complianceable">
<title>Complianceable</title>
<parent>cm:auditable</parent>
<!-- TODO: Support mandatory-aspects on an aspect in the meta-model
<mandatory-aspects>
<aspect>cm:auditable</aspect>
</mandatory-aspects>
-->
<properties>
<property name="cm:removeAfter">
<title>Remove After</title>
<type>d:datetime</type>
</property>
</properties>
<mandatory-aspects>
<aspect>cm:auditable</aspect>
</mandatory-aspects>
</aspect>
<aspect name="cm:ownable">

View File

@ -116,9 +116,6 @@
<property name="dictionaryService">
<ref bean="dictionaryService"/>
</property>
<property name="policyName">
<value>onCreateNode</value>
</property>
<property name="isClassBehaviour">
<value>true</value>
</property>
@ -133,16 +130,10 @@
<bean id="on-property-update-trigger" class="org.alfresco.repo.rule.ruletrigger.OnPropertyUpdateRuleTrigger" parent="rule-trigger-base">
</bean>
<bean id="on-create-child-association-trigger" class="org.alfresco.repo.rule.ruletrigger.SingleChildAssocRefPolicyRuleTrigger" parent="rule-trigger-base">
<property name="policyName">
<value>onCreateChildAssociation</value>
</property>
<bean id="on-create-child-association-trigger" class="org.alfresco.repo.rule.ruletrigger.OnCreateChildAssociationRuleTrigger" parent="rule-trigger-base">
</bean>
<bean id="on-delete-child-association-trigger" class="org.alfresco.repo.rule.ruletrigger.SingleChildAssocRefPolicyRuleTrigger" parent="rule-trigger-base">
<property name="policyName">
<value>beforeDeleteChildAssociation</value>
</property>
<bean id="on-delete-child-association-trigger" class="org.alfresco.repo.rule.ruletrigger.BeforeDeleteChildAssociationRuleTrigger" parent="rule-trigger-base">
<property name="executeRuleImmediately">
<value>true</value>
</property>

View File

@ -173,7 +173,7 @@ public class HttpAlfrescoContentReader extends AbstractContentReader
else
{
// Check the return codes
if (statusCode == HttpServletResponse.SC_NOT_FOUND)
if (statusCode == HttpServletResponse.SC_NO_CONTENT)
{
// It doesn't exist, which is not an error. The defaults are fine.
}

View File

@ -36,6 +36,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
@ -375,7 +376,15 @@ public class ExporterComponent
Set<QName> aspects = nodeService.getAspects(nodeRef);
for (QName aspect : aspects)
{
if (!isExcludedURI(parameters.getExcludeNamespaceURIs(), aspect.getNamespaceURI()))
if (isExcludedURI(parameters.getExcludeNamespaceURIs(), aspect.getNamespaceURI()))
{
continue;
}
else if (isExcludeAspect(aspect))
{
continue;
}
else
{
exporter.startAspect(nodeRef, aspect);
exporter.endAspect(nodeRef, aspect);
@ -686,6 +695,25 @@ public class ExporterComponent
return false;
}
/**
* Is the aspect unexportable?
*
* @param aspectQName the aspect name
* @return <tt>true</tt> if the aspect can't be exported
*/
private boolean isExcludeAspect(QName aspectQName)
{
if (aspectQName.equals(ContentModel.ASPECT_MULTILINGUAL_DOCUMENT) ||
aspectQName.equals(ContentModel.ASPECT_MULTILINGUAL_EMPTY_TRANSLATION))
{
return true;
}
else
{
return false;
}
}
/**
* Determine if specified Node Reference is within the set of nodes to be exported
*

View File

@ -36,6 +36,7 @@ import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.search.QueryParameterDefImpl;
import org.alfresco.repo.tenant.TenantService;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.model.FileExistsException;
@ -521,12 +522,20 @@ public class FileFolderServiceImpl implements FileFolderService
// done
return nodeRefs;
}
/**
* @see #move(NodeRef, NodeRef, String)
*/
public FileInfo rename(NodeRef sourceNodeRef, String newName) throws FileExistsException, FileNotFoundException
{
// NOTE:
//
// This information is placed in the transaction to indicate that a rename has taken place. This information is
// used by the rule trigger to ensure inbound rule is not triggered by a file rename
//
// See http://issues.alfresco.com/browse/AR-1544
AlfrescoTransactionSupport.bindResource(sourceNodeRef.toString()+"rename", sourceNodeRef);
return moveOrCopy(sourceNodeRef, null, newName, true);
}
@ -643,12 +652,12 @@ public class FileFolderServiceImpl implements FileFolderService
ContentData contentData = (ContentData)nodeService.getProperty(targetNodeRef, ContentModel.PROP_CONTENT);
if (contentData != null)
{
String targetMimetype = contentData.getMimetype();
String newMimetype = mimetypeService.guessMimetype(newName);
if (!targetMimetype.equalsIgnoreCase(newMimetype))
String targetMimetype = contentData.getMimetype();
String newMimetype = mimetypeService.guessMimetype(newName);
if (!targetMimetype.equalsIgnoreCase(newMimetype))
{
contentData = ContentData.setMimetype(contentData, newMimetype);
nodeService.setProperty(targetNodeRef, ContentModel.PROP_CONTENT, contentData);
contentData = ContentData.setMimetype(contentData, newMimetype);
nodeService.setProperty(targetNodeRef, ContentModel.PROP_CONTENT, contentData);
}
}
}

View File

@ -768,16 +768,25 @@ public class ModuleManagementTool
}
}
}
if (directory == false)
try
{
// Install the module
manager.installModule(aepFileLocation, warFileLocation, previewInstall, forceInstall, backup);
if (directory == false)
{
// Install the module
manager.installModule(aepFileLocation, warFileLocation, previewInstall, forceInstall, backup);
}
else
{
// Install the modules from the directory
manager.installModules(aepFileLocation, warFileLocation, previewInstall, forceInstall, backup);
}
}
else
catch (ModuleManagementToolException e)
{
// Install the modules from the directory
manager.installModules(aepFileLocation, warFileLocation, previewInstall, forceInstall, backup);
// These are user-friendly
manager.outputMessage(e.getMessage());
outputUsage();
}
}
else if (OP_LIST.equals(operation) == true && args.length == 2)

View File

@ -1013,9 +1013,6 @@ public abstract class BaseNodeServiceTest extends BaseSpringTest
getSession().flush();
getSession().clear();
// make sure that our integrity allows this
AlfrescoTransactionSupport.flush();
// now get them back
Map<QName, Serializable> checkMap = nodeService.getProperties(nodeRef);
assertNotNull("Properties were not set/retrieved", checkMap);
@ -1717,14 +1714,12 @@ public abstract class BaseNodeServiceTest extends BaseSpringTest
ASSOC_TYPE_QNAME_TEST_CONTAINS,
QName.createQName("pathB"),
ContentModel.TYPE_CONTENT);
AlfrescoTransactionSupport.flush();
// there should be no issue with a duplicate association names any more
ChildAssociationRef pathBDuplicateRef = nodeService.createNode(
parentRef,
ASSOC_TYPE_QNAME_TEST_CONTAINS,
QName.createQName("pathB"),
ContentModel.TYPE_CONTENT);
AlfrescoTransactionSupport.flush();
// Now create nodes with duplicate cm:name properties
Map<QName, Serializable> props = new HashMap<QName, Serializable>(5);
props.put(ContentModel.PROP_NAME, "ABC");
@ -1734,7 +1729,6 @@ public abstract class BaseNodeServiceTest extends BaseSpringTest
QName.createQName("ABC"),
ContentModel.TYPE_CONTENT,
props);
AlfrescoTransactionSupport.flush();
try
{
// now check that the duplicate is detected with attention to being case-insensitive
@ -1774,7 +1768,6 @@ public abstract class BaseNodeServiceTest extends BaseSpringTest
ContentModel.TYPE_CONTENT,
props);
NodeRef abcRef = pathAbcRef.getChildRef();
AlfrescoTransactionSupport.flush();
// delete ABC
nodeService.deleteNode(abcRef);
// create it again

View File

@ -70,6 +70,7 @@ import org.alfresco.service.cmr.coci.CheckOutCheckInService;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.lock.LockService;
import org.alfresco.service.cmr.lock.LockStatus;
import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.ContentService;
@ -118,6 +119,7 @@ public class RuleServiceCoverageTest extends TestCase
private ContentTransformerRegistry transformerRegistry;
private CopyService copyService;
private AuthenticationComponent authenticationComponent;
private FileFolderService fileFolderService;
/**
* Category related values
@ -157,6 +159,7 @@ public class RuleServiceCoverageTest extends TestCase
this.transactionService = serviceRegistry.getTransactionService();
this.transformerRegistry = (ContentTransformerRegistry)applicationContext.getBean("contentTransformerRegistry");
this.authenticationComponent = (AuthenticationComponent)applicationContext.getBean("authenticationComponent");
this.fileFolderService = serviceRegistry.getFileFolderService();
//authenticationComponent.setCurrentUser(authenticationComponent.getSystemUserName());
//authenticationComponent.setSystemUserAsCurrentUser();
@ -359,6 +362,48 @@ public class RuleServiceCoverageTest extends TestCase
// System.out.println(NodeStoreInspector.dumpNodeStore(this.nodeService, this.testStoreRef));
}
public void testModifyNameTriggersInboundRule()
throws Exception
{
//this.nodeService.addAspect(this.nodeRef, ContentModel.ASPECT_LOCKABLE, null);
Map<QName, Serializable> folderProps = new HashMap<QName, Serializable>(1);
folderProps.put(ContentModel.PROP_NAME, "myTestFolder");
NodeRef folder = this.nodeService.createNode(
this.rootNodeRef,
ContentModel.ASSOC_CHILDREN,
ContentModel.ASSOC_CHILDREN,
ContentModel.TYPE_FOLDER,
folderProps).getChildRef();
Map<String, Serializable> params = new HashMap<String, Serializable>(1);
params.put("aspect-name", ContentModel.ASPECT_VERSIONABLE);
Rule rule = createRule(
RuleType.INBOUND,
AddFeaturesActionExecuter.NAME,
params,
NoConditionEvaluator.NAME,
null);
this.ruleService.saveRule(folder, rule);
Map<QName, Serializable> contentProps = new HashMap<QName, Serializable>(1);
contentProps.put(ContentModel.PROP_NAME, "myTestDocument.txt");
NodeRef newNodeRef = this.nodeService.createNode(
folder,
ContentModel.ASSOC_CONTAINS,
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "myTestDocument.txt"),
ContentModel.TYPE_CONTENT,
contentProps).getChildRef();
//addContentToNode(newNodeRef);
assertFalse(this.nodeService.hasAspect(newNodeRef, ContentModel.ASPECT_VERSIONABLE));
// Use the file folder to change the name of the node
this.fileFolderService.rename(newNodeRef, "myNewName.txt");
assertFalse(this.nodeService.hasAspect(newNodeRef, ContentModel.ASPECT_VERSIONABLE));
}
public void testDisableIndividualRules()
{
Map<String, Serializable> params = new HashMap<String, Serializable>(1);

View File

@ -35,8 +35,6 @@ import org.alfresco.repo.action.evaluator.ComparePropertyValueEvaluator;
import org.alfresco.repo.action.executer.ImageTransformActionExecuter;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
import org.alfresco.repo.transaction.TransactionUtil;
import org.alfresco.repo.transaction.TransactionUtil.TransactionWork;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionCondition;
import org.alfresco.service.cmr.repository.ContentWriter;
@ -47,7 +45,6 @@ import org.alfresco.service.cmr.rule.RuleType;
import org.alfresco.service.cmr.security.AuthenticationService;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.QName;
import org.apache.commons.digester.SetRootRule;
/**

View File

@ -0,0 +1,94 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.repo.rule.ruletrigger;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* A rule trigger for the creation of <b>secondary child associations</b>.
* <p>
* Policy names supported are:
* <ul>
* <li>{@linkplain NodeServicePolicies.BeforeDeleteChildAssociationPolicy}</li>
* </ul>
*
* @author Roy Wetherall
*/
public class BeforeDeleteChildAssociationRuleTrigger
extends RuleTriggerAbstractBase
implements NodeServicePolicies.BeforeDeleteChildAssociationPolicy
{
/**
* The logger
*/
private static Log logger = LogFactory.getLog(BeforeDeleteChildAssociationRuleTrigger.class);
private static final String POLICY = "beforeDeleteChildAssociation";
private boolean isClassBehaviour = false;
public void setIsClassBehaviour(boolean isClassBehaviour)
{
this.isClassBehaviour = isClassBehaviour;
}
/**
* @see org.alfresco.repo.rule.ruletrigger.RuleTrigger#registerRuleTrigger()
*/
public void registerRuleTrigger()
{
if (isClassBehaviour == true)
{
this.policyComponent.bindClassBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, POLICY),
this,
new JavaBehaviour(this, POLICY));
}
else
{
this.policyComponent.bindAssociationBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, POLICY),
this,
new JavaBehaviour(this, POLICY));
}
}
public void beforeDeleteChildAssociation(ChildAssociationRef childAssocRef)
{
if (logger.isDebugEnabled() == true)
{
logger.debug("Single child assoc trigger (policy = " + POLICY + ") fired for parent node " + childAssocRef.getParentRef() + " and child node " + childAssocRef.getChildRef());
}
triggerRules(childAssocRef.getParentRef(), childAssocRef.getChildRef());
}
}

View File

@ -25,12 +25,14 @@
package org.alfresco.repo.rule.ruletrigger;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.service.cmr.dictionary.ClassDefinition;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@ -49,7 +51,7 @@ import org.apache.commons.logging.LogFactory;
*
* @author Roy Wetherall
*/
public class CreateNodeRuleTrigger extends SingleChildAssocRefPolicyRuleTrigger
public class CreateNodeRuleTrigger extends RuleTriggerAbstractBase
implements NodeServicePolicies.OnCreateNodePolicy
{
/**
@ -57,12 +59,42 @@ public class CreateNodeRuleTrigger extends SingleChildAssocRefPolicyRuleTrigger
*/
private static Log logger = LogFactory.getLog(CreateNodeRuleTrigger.class);
private static final String POLICY = "onCreateNode";
private boolean isClassBehaviour = false;
public void setIsClassBehaviour(boolean isClassBehaviour)
{
this.isClassBehaviour = isClassBehaviour;
}
DictionaryService dictionaryService;
public void setDictionaryService(DictionaryService dictionaryService)
{
this.dictionaryService = dictionaryService;
}
/**
* @see org.alfresco.repo.rule.ruletrigger.RuleTrigger#registerRuleTrigger()
*/
public void registerRuleTrigger()
{
if (isClassBehaviour == true)
{
this.policyComponent.bindClassBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, POLICY),
this,
new JavaBehaviour(this, POLICY));
}
else
{
this.policyComponent.bindAssociationBehaviour(
QName.createQName(NamespaceService.ALFRESCO_URI, POLICY),
this,
new JavaBehaviour(this, POLICY));
}
}
/**
* {@inheritDoc}

View File

@ -26,8 +26,8 @@ package org.alfresco.repo.rule.ruletrigger;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.rule.RuleServiceException;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log;
@ -39,40 +39,23 @@ import org.apache.commons.logging.LogFactory;
* Policy names supported are:
* <ul>
* <li>{@linkplain NodeServicePolicies.OnCreateChildAssociationPolicy}</li>
* <li>{@linkplain NodeServicePolicies.BeforeDeleteChildAssociationPolicy}</li>
* </ul>
*
* @author Roy Wetherall
*/
public class SingleChildAssocRefPolicyRuleTrigger
public class OnCreateChildAssociationRuleTrigger
extends RuleTriggerAbstractBase
implements NodeServicePolicies.OnCreateChildAssociationPolicy,
NodeServicePolicies.BeforeDeleteChildAssociationPolicy
implements NodeServicePolicies.OnCreateChildAssociationPolicy
{
private static final String ERR_POLICY_NAME_NOT_SET = "Unable to register rule trigger since policy name has not been set.";
/**
* The logger
*/
private static Log logger = LogFactory.getLog(SingleChildAssocRefPolicyRuleTrigger.class);
private static Log logger = LogFactory.getLog(OnCreateChildAssociationRuleTrigger.class);
private static final String POLICY_NAME = "onCreateChildAssociation";
private String policyNamespace = NamespaceService.ALFRESCO_URI;
private String policyName;
private boolean isClassBehaviour = false;
public void setPolicyNamespace(String policyNamespace)
{
this.policyNamespace = policyNamespace;
}
public void setPolicyName(String policyName)
{
this.policyName = policyName;
}
private boolean isClassBehaviour = false;
public void setIsClassBehaviour(boolean isClassBehaviour)
{
this.isClassBehaviour = isClassBehaviour;
@ -83,37 +66,22 @@ public class SingleChildAssocRefPolicyRuleTrigger
*/
public void registerRuleTrigger()
{
if (policyName == null)
{
throw new RuleServiceException(ERR_POLICY_NAME_NOT_SET);
}
if (isClassBehaviour == true)
{
this.policyComponent.bindClassBehaviour(
QName.createQName(this.policyNamespace, this.policyName),
QName.createQName(NamespaceService.ALFRESCO_URI, POLICY_NAME),
this,
new JavaBehaviour(this, policyName));
new JavaBehaviour(this, POLICY_NAME));
}
else
{
{
this.policyComponent.bindAssociationBehaviour(
QName.createQName(this.policyNamespace, this.policyName),
QName.createQName(NamespaceService.ALFRESCO_URI, POLICY_NAME),
this,
new JavaBehaviour(this, policyName));
new JavaBehaviour(this, POLICY_NAME));
}
}
public void beforeDeleteChildAssociation(ChildAssociationRef childAssocRef)
{
if (logger.isDebugEnabled() == true)
{
logger.debug("Single child assoc trigger (policy = " + this.policyName + ") fired for parent node " + childAssocRef.getParentRef() + " and child node " + childAssocRef.getChildRef());
}
triggerRules(childAssocRef.getParentRef(), childAssocRef.getChildRef());
}
public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean isNewNode)
{
if (isNewNode)
@ -122,9 +90,23 @@ public class SingleChildAssocRefPolicyRuleTrigger
}
if (logger.isDebugEnabled() == true)
{
logger.debug("Single child assoc trigger (policy = " + this.policyName + ") fired for parent node " + childAssocRef.getParentRef() + " and child node " + childAssocRef.getChildRef());
logger.debug("Single child assoc trigger (policy = " + POLICY_NAME + ") fired for parent node " + childAssocRef.getParentRef() + " and child node " + childAssocRef.getChildRef());
}
triggerRules(childAssocRef.getParentRef(), childAssocRef.getChildRef());
// NOTE:
//
// We check for the presence of this resource in the transaction to determine whether a rename has been issued. If that is the case
// then we don't want to trigger any associated rules.
//
// See http://issues.alfresco.com/browse/AR-1544
if (AlfrescoTransactionSupport.getResource(childAssocRef.getChildRef().toString()+"rename") == null)
{
triggerRules(childAssocRef.getParentRef(), childAssocRef.getChildRef());
}
else
{
// Remove the marker
AlfrescoTransactionSupport.unbindResource(childAssocRef.getChildRef().toString()+"rename");
}
}
}

View File

@ -554,21 +554,7 @@ public abstract class AlfrescoTransactionSupport
*/
public void flush()
{
// check integrity
for (IntegrityChecker integrityChecker : integrityCheckers)
{
integrityChecker.checkIntegrity();
}
// flush listeners
for (TransactionListener listener : getListenersIterable())
{
listener.flush();
}
// flush changes
for (TransactionalDao daoService : getDaoServices())
{
daoService.flush();
}
throw new UnsupportedOperationException("Manual flush no longer supported.");
}
/**
@ -627,8 +613,12 @@ public abstract class AlfrescoTransactionSupport
listener.beforeCommit(readOnly);
}
// flush
flush();
// Check integrity
for (IntegrityChecker integrityChecker : integrityCheckers)
{
integrityChecker.checkIntegrity();
}
// prepare the indexes
for (LuceneIndexerAndSearcher lucene : lucenes)
{