()
{
public Void execute() throws Throwable
{
// We'll do all this as user 'UserTwo'.
AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
//Parent Folder Rule:
//Add Versionable to newly created nodes
org.alfresco.service.cmr.rule.Rule parentRule = new org.alfresco.service.cmr.rule.Rule();
parentRule.setRuleTypes(Collections.singletonList(RuleType.INBOUND));
parentRule.setTitle("RuleServiceTest" + GUID.generate());
parentRule.setDescription("Add Versionable");
Action action = ACTION_SERVICE.createAction(AddFeaturesActionExecuter.NAME);
action.setParameterValue(AddFeaturesActionExecuter.PARAM_ASPECT_NAME, ContentModel.ASPECT_VERSIONABLE);
parentRule.setAction(action);
parentRule.applyToChildren(true);
//Child Folder Rule:
//Remove Versionable to newly created nodes
org.alfresco.service.cmr.rule.Rule childRule = new org.alfresco.service.cmr.rule.Rule();
childRule.setRuleTypes(Collections.singletonList(RuleType.INBOUND));
childRule.setTitle("RuleServiceTest" + GUID.generate());
childRule.setDescription("RemoveVersonable");
Action action2 = ACTION_SERVICE.createAction(RemoveFeaturesActionExecuter.NAME);
action2.setParameterValue(RemoveFeaturesActionExecuter.PARAM_ASPECT_NAME, ContentModel.ASPECT_VERSIONABLE);
childRule.setAction(action2);
childRule.applyToChildren(false); //Don't need to apply to children
//Save Rules to appropriate Folders
RULE_SERVICE.saveRule(parentFolder, parentRule);
RULE_SERVICE.saveRule(childFolder, childRule);
return null;
}
});
//Trigger the inbound rules by adding content
addContentToNode(childContent);
//Aspect is removed
assertTrue("Versionable Aspect was not removed", ! NODE_SERVICE.hasAspect(childContent, ContentModel.ASPECT_VERSIONABLE));
}
@Test public void noOp() { /* Intentionally empty. */ }
/**
* Adds content to a given node.
*
* Used to trigger rules of type of incomming.
*
* @param nodeRef the node reference
*/
private void addContentToNode(NodeRef nodeRef)
{
ContentWriter contentWriter = CONTENT_SERVICE.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
contentWriter.setEncoding("UTF-8");
assertNotNull(contentWriter);
contentWriter.putContent(STANDARD_TEXT_CONTENT + System.currentTimeMillis());
}
}