()
+ {
+ 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());
+ }
+
+}