PageRenderTime 39ms CodeModel.GetById 12ms RepoModel.GetById 1ms app.codeStats 0ms

/jira3-script-plugin/src/main/java/com/google/code/jira/script/workflow/ScriptConfigurationFactory.java

http://jira-script-plugin.googlecode.com/
Java | 92 lines | 73 code | 17 blank | 2 comment | 12 complexity | df2ac330e9a98388bd0a66db3aa1d4b5 MD5 | raw file
  1. package com.google.code.jira.script.workflow;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.script.ScriptEngineFactory;
  7. import javax.script.ScriptEngineManager;
  8. import org.apache.log4j.Category;
  9. import org.ofbiz.core.util.UtilMisc;
  10. import com.atlassian.jira.plugin.workflow.AbstractWorkflowPluginFactory;
  11. import com.atlassian.jira.plugin.workflow.WorkflowPluginConditionFactory;
  12. import com.atlassian.jira.plugin.workflow.WorkflowPluginFunctionFactory;
  13. import com.atlassian.jira.plugin.workflow.WorkflowPluginValidatorFactory;
  14. import com.opensymphony.workflow.loader.AbstractDescriptor;
  15. import com.opensymphony.workflow.loader.ConditionDescriptor;
  16. import com.opensymphony.workflow.loader.FunctionDescriptor;
  17. import com.opensymphony.workflow.loader.ValidatorDescriptor;
  18. public class ScriptConfigurationFactory extends AbstractWorkflowPluginFactory implements
  19. WorkflowPluginConditionFactory, WorkflowPluginFunctionFactory, WorkflowPluginValidatorFactory {
  20. private static final Category log = Category.getInstance(ScriptConfigurationFactory.class);
  21. private final List engines = new ArrayList();
  22. public ScriptConfigurationFactory() {
  23. List engineFactories = new ScriptEngineManager().getEngineFactories();
  24. if (engineFactories == null || engineFactories.size() == 0) {
  25. log.warn("No script engine found!");
  26. }
  27. Iterator iterator = engineFactories.iterator();
  28. while (iterator.hasNext()) {
  29. ScriptEngineFactory factory = (ScriptEngineFactory) iterator.next();
  30. engines.add(factory.getEngineName());
  31. }
  32. }
  33. protected void getVelocityParamsForInput(Map velocityParams) {
  34. getVelocityParamsForEdit(velocityParams, null);
  35. }
  36. protected void getVelocityParamsForEdit(Map velocityParams, AbstractDescriptor descriptor) {
  37. velocityParams.put("engines", engines);
  38. // Sets empty values to the expected params for input.
  39. if (descriptor == null) {
  40. velocityParams.put(ScriptWorkflowUtils.SCRIPT_NAME, "");
  41. velocityParams.put(ScriptWorkflowUtils.ENGINE_NAME, "");
  42. velocityParams
  43. .put(
  44. ScriptWorkflowUtils.SCRIPT_CONTENT,
  45. "// Objects available:\n"
  46. + "// issue (a mutable issue object)\n"
  47. + "// originalissue (an inmutable issue object that represents the original issue holding unmodified values)\n"
  48. + "// caller (an user object that represents the user that is currently logged in and executing the workflow transition)\n"
  49. + "// log (a log object which can be used to print messages using the log engine)\n");
  50. return;
  51. }
  52. // Sets the selected values to expected params for edit.
  53. Map args = null;
  54. if (descriptor instanceof ConditionDescriptor) {
  55. args = ((ConditionDescriptor) descriptor).getArgs();
  56. } else if (descriptor instanceof ValidatorDescriptor) {
  57. args = ((ValidatorDescriptor) descriptor).getArgs();
  58. } else if (descriptor instanceof FunctionDescriptor) {
  59. args = ((FunctionDescriptor) descriptor).getArgs();
  60. }
  61. velocityParams.put(ScriptWorkflowUtils.SCRIPT_NAME, ScriptWorkflowUtils.getScriptName(args));
  62. velocityParams.put(ScriptWorkflowUtils.ENGINE_NAME, ScriptWorkflowUtils.getEngineName(args));
  63. velocityParams.put(ScriptWorkflowUtils.SCRIPT_CONTENT, ScriptWorkflowUtils.getScriptContent(args));
  64. }
  65. protected void getVelocityParamsForView(Map velocityParams, AbstractDescriptor descriptor) {
  66. getVelocityParamsForEdit(velocityParams, descriptor);
  67. }
  68. public Map getDescriptorParams(Map descriptorParams) {
  69. String scriptName = extractSingleParam(descriptorParams, ScriptWorkflowUtils.SCRIPT_NAME);
  70. String engineName = extractSingleParam(descriptorParams, ScriptWorkflowUtils.ENGINE_NAME);
  71. String scriptContent = extractSingleParam(descriptorParams, ScriptWorkflowUtils.SCRIPT_CONTENT);
  72. return UtilMisc.toMap(ScriptWorkflowUtils.SCRIPT_NAME, scriptName, ScriptWorkflowUtils.ENGINE_NAME, engineName,
  73. ScriptWorkflowUtils.SCRIPT_CONTENT, scriptContent);
  74. }
  75. }