1 17 package org.alfresco.webservice.test; 18 19 import org.alfresco.webservice.action.Action; 20 import org.alfresco.webservice.action.ActionExecutionResult; 21 import org.alfresco.webservice.action.ActionItemDefinition; 22 import org.alfresco.webservice.action.ActionItemDefinitionType; 23 import org.alfresco.webservice.action.ActionServiceSoapBindingStub; 24 import org.alfresco.webservice.action.ParameterDefinition; 25 import org.alfresco.webservice.action.Rule; 26 import org.alfresco.webservice.action.RuleType; 27 import org.alfresco.webservice.types.NamedValue; 28 import org.alfresco.webservice.types.Node; 29 import org.alfresco.webservice.types.Predicate; 30 import org.alfresco.webservice.types.Reference; 31 import org.alfresco.webservice.util.Constants; 32 import org.alfresco.webservice.util.WebServiceFactory; 33 import org.apache.commons.logging.Log; 34 import org.apache.commons.logging.LogFactory; 35 36 39 public class ActionServiceSystemTest extends BaseWebServiceSystemTest 40 { 41 private static Log logger = LogFactory.getLog(ActionServiceSystemTest.class); 42 43 private ActionServiceSoapBindingStub actionService = null; 44 45 public ActionServiceSystemTest() 46 { 47 this.actionService = WebServiceFactory.getActionService(); 48 } 49 50 public void testGetActionDefinitions() throws Exception 51 { 52 ActionItemDefinition[] definitions = this.actionService.getActionDefinitions(); 53 assertNotNull(definitions); 54 assertTrue(definitions.length > 0); 55 56 if (logger.isDebugEnabled() == true) 57 { 58 System.out.println("Action definitions:"); 60 for (ActionItemDefinition definition : definitions) 61 { 62 System.out.println(definition.getName() + " - " + definition.getTitle()); 63 } 64 System.out.println(""); 65 } 66 } 67 68 public void testGetConditionDefinitions() throws Exception 69 { 70 ActionItemDefinition[] definitions = this.actionService.getConditionDefinitions(); 71 assertNotNull(definitions); 72 assertTrue(definitions.length > 0); 73 74 if (logger.isDebugEnabled() == true) 75 { 76 System.out.println("Condition definitions:"); 78 for (ActionItemDefinition definition : definitions) 79 { 80 System.out.println(definition.getName() + " - " + definition.getTitle()); 81 } 82 System.out.println(""); 83 } 84 } 85 86 public void testGetActionItemDefinition() throws Exception 87 { 88 ActionItemDefinition actionDefinition = this.actionService.getActionItemDefinition("add-features", ActionItemDefinitionType.action); 90 assertNotNull(actionDefinition); 91 assertEquals("add-features", actionDefinition.getName()); 92 assertNotNull(actionDefinition.getTitle()); 93 assertNotNull(actionDefinition.getDescription()); 94 assertEquals(ActionItemDefinitionType.action, actionDefinition.getType()); 95 assertTrue(actionDefinition.isAdHocPropertiesAllowed()); 96 assertNotNull(actionDefinition.getParameterDefinition()); 97 98 assertTrue(actionDefinition.getParameterDefinition().length == 1); 100 ParameterDefinition param = actionDefinition.getParameterDefinition()[0]; 101 assertEquals("aspect-name", param.getName()); 102 assertTrue(param.isIsMandatory()); 103 assertEquals("{http://www.alfresco.org/model/dictionary/1.0}qname", param.getType()); 104 105 ActionItemDefinition conditionDefintion = this.actionService.getActionItemDefinition("no-condition", ActionItemDefinitionType.condition); 107 assertNotNull(conditionDefintion); 108 assertEquals("no-condition", conditionDefintion.getName()); 109 assertNotNull(conditionDefintion.getTitle()); 110 assertNotNull(conditionDefintion.getDescription()); 111 assertEquals(ActionItemDefinitionType.condition, conditionDefintion.getType()); 112 assertFalse(conditionDefintion.isAdHocPropertiesAllowed()); 113 assertNull(conditionDefintion.getParameterDefinition()); 114 115 ActionItemDefinition bad = this.actionService.getActionItemDefinition("badName", ActionItemDefinitionType.condition); 117 assertNull(bad); 118 } 119 120 public void testGetRuleTypes() throws Exception 121 { 122 RuleType[] ruleTypes = this.actionService.getRuleTypes(); 123 assertNotNull(ruleTypes); 124 assertTrue(ruleTypes.length > 0); 125 126 if (logger.isDebugEnabled() == true) 127 { 128 System.out.println("Rule types:"); 129 for (RuleType type : ruleTypes) 130 { 131 System.out.println(type.getName() + " - " + type.getDisplayLabel()); 132 } 133 } 134 135 RuleType ruleType = this.actionService.getRuleType("inbound"); 136 assertNotNull(ruleType); 137 assertEquals("inbound", ruleType.getName()); 138 assertNotNull(ruleType.getDisplayLabel()); 139 140 RuleType badRuleType = this.actionService.getRuleType("basRuleName"); 142 assertNull(badRuleType); 143 } 144 145 public void testActionPeristance() throws Exception 146 { 147 Action[] actions1 = this.actionService.getActions(BaseWebServiceSystemTest.contentReference, null); 149 assertNull(actions1); 150 151 NamedValue[] parameters = new NamedValue[]{new NamedValue("aspect-name", Constants.ASPECT_VERSIONABLE)}; 153 Action newAction1 = new Action(); 154 newAction1.setActionName("add-features"); 155 newAction1.setTitle("Add the versionable aspect to the node."); 156 newAction1.setDescription("This will add the verisonable aspect to the node and thus create a version history."); 157 newAction1.setExecuteAsynchronously(false); 158 newAction1.setParameters(parameters); 159 160 Action[] saveResults1 = this.actionService.saveActions(BaseWebServiceSystemTest.contentReference, new Action[]{newAction1}); 162 assertNotNull(saveResults1); 163 assertEquals(1, saveResults1.length); 164 Action savedAction1 = saveResults1[0]; 165 assertNotNull(savedAction1); 166 assertNotNull(savedAction1.getId()); 167 assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), savedAction1.getReference().getUuid()); 168 assertEquals("add-features", savedAction1.getActionName()); 169 assertEquals("Add the versionable aspect to the node.", savedAction1.getTitle()); 170 assertEquals("This will add the verisonable aspect to the node and thus create a version history.", savedAction1.getDescription()); 171 assertFalse(savedAction1.isExecuteAsynchronously()); 172 173 176 savedAction1.setTitle("The title has been updated"); 178 savedAction1.setExecuteAsynchronously(true); 179 180 Action[] saveResults2 = this.actionService.saveActions(BaseWebServiceSystemTest.contentReference, new Action[]{savedAction1}); 182 assertNotNull(saveResults2); 183 assertEquals(1, saveResults2.length); 184 Action savedAction2 = saveResults2[0]; 185 assertNotNull(savedAction2); 186 assertEquals(savedAction2.getId(), savedAction2.getId()); 187 assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), savedAction2.getReference().getUuid()); 188 assertEquals("add-features", savedAction2.getActionName()); 189 assertEquals("The title has been updated", savedAction2.getTitle()); 190 assertEquals("This will add the verisonable aspect to the node and thus create a version history.", savedAction2.getDescription()); 191 assertTrue(savedAction2.isExecuteAsynchronously()); 192 193 195 this.actionService.removeActions(BaseWebServiceSystemTest.contentReference, null); 197 198 Action[] actions3 = this.actionService.getActions(BaseWebServiceSystemTest.contentReference, null); 200 assertNull(actions3); 201 } 202 203 public void testActionExecution() throws Exception 204 { 205 Predicate predicate = new Predicate(new Reference[]{BaseWebServiceSystemTest.contentReference}, BaseWebServiceSystemTest.store, null); 206 207 Node node1 = this.repositoryService.get(predicate)[0]; 209 for(String aspect : node1.getAspects()) 210 { 211 if (Constants.ASPECT_VERSIONABLE.equals(aspect) == true) 212 { 213 fail("The content node already has the versionable aspect applied"); 214 } 215 } 216 217 NamedValue[] parameters = new NamedValue[]{new NamedValue("aspect-name", Constants.ASPECT_VERSIONABLE)}; 219 Action newAction1 = new Action(); 220 newAction1.setActionName("add-features"); 221 newAction1.setTitle("Add the versionable aspect to the node."); 222 newAction1.setDescription("This will add the verisonable aspect to the node and thus create a version history."); 223 newAction1.setExecuteAsynchronously(false); 224 newAction1.setParameters(parameters); 225 226 ActionExecutionResult[] results = this.actionService.executeActions(predicate, new Action[]{newAction1}); 228 229 assertNotNull(results); 231 assertEquals(1, results.length); 232 ActionExecutionResult result = results[0]; 233 assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), result.getReference().getUuid()); 234 assertNotNull(result.getActions()); 235 assertEquals(1, result.getActions().length); 236 Action resultAction = result.getActions()[0]; 237 assertEquals("add-features", resultAction.getActionName()); 238 239 Node node2 = this.repositoryService.get(predicate)[0]; 241 boolean bFail = true; 242 for(String aspect : node2.getAspects()) 243 { 244 if (Constants.ASPECT_VERSIONABLE.equals(aspect) == true) 245 { 246 bFail = false; 247 } 248 } 249 if (bFail == true) 250 { 251 fail("The action was executed but the versionable aspect has not been applied to the content reference"); 252 } 253 } 254 255 public void testRulePersistance() throws Exception 256 { 257 Rule[] rules1 = this.actionService.getRules(BaseWebServiceSystemTest.contentReference, null); 259 assertNull(rules1); 260 261 NamedValue[] parameters = new NamedValue[]{new NamedValue("aspect-name", Constants.ASPECT_CLASSIFIABLE)}; 263 Action newAction = new Action(); 264 newAction.setActionName("add-features"); 265 newAction.setParameters(parameters); 266 267 Rule newRule = new Rule(); 269 newRule.setRuleType("incomming"); 270 newRule.setTitle("This rule adds the classificable aspect"); 271 newRule.setActions(new Action[]{newAction}); 272 273 Rule[] saveResults1 = this.actionService.saveRules(BaseWebServiceSystemTest.contentReference, new Rule[]{newRule}); 275 assertNotNull(saveResults1); 276 assertEquals(1, saveResults1.length); 277 Rule savedRule1 = saveResults1[0]; 278 assertNotNull(savedRule1); 279 assertNotNull(savedRule1.getId()); 280 assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), savedRule1.getReference().getUuid()); 281 assertEquals("incomming", savedRule1.getRuleType()); 282 assertEquals("This rule adds the classificable aspect", savedRule1.getTitle()); 283 assertFalse(savedRule1.isExecuteAsynchronously()); 284 285 288 savedRule1.setTitle("The title has been updated"); 290 savedRule1.setExecuteAsynchronously(true); 291 292 Rule[] saveResults2 = this.actionService.saveRules(BaseWebServiceSystemTest.contentReference, new Rule[]{savedRule1}); 294 assertNotNull(saveResults2); 295 assertEquals(1, saveResults2.length); 296 Rule savedRule2 = saveResults2[0]; 297 assertNotNull(savedRule2); 298 assertEquals(savedRule2.getId(), savedRule2.getId()); 299 assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), savedRule2.getReference().getUuid()); 300 assertEquals("incomming", savedRule2.getRuleType()); 301 assertEquals("The title has been updated", savedRule2.getTitle()); 302 assertTrue(savedRule2.isExecuteAsynchronously()); 303 304 306 this.actionService.removeRules(BaseWebServiceSystemTest.contentReference, null); 308 309 Rule[] rules3 = this.actionService.getRules(BaseWebServiceSystemTest.contentReference, null); 311 assertNull(rules3); 312 } 313 } 314 | Popular Tags |