protected AbstractWorkflowModuleDescriptor getWorkflowModuleDescriptor( String className, final String pluginType) throws PluginParseException { final Collection moduleDescriptors = pluginAccessor.getEnabledModuleDescriptorsByType(pluginType); for (Iterator iterator = moduleDescriptors.iterator(); iterator.hasNext(); ) { AbstractWorkflowModuleDescriptor abstractWorkflowModuleDescriptor = (AbstractWorkflowModuleDescriptor) iterator.next(); if (abstractWorkflowModuleDescriptor.getImplementationClass().getName().equals(className)) { return abstractWorkflowModuleDescriptor; } } return null; }
public WorkflowDescriptorInfo formatDescriptor(AbstractDescriptor descriptor) { final String type; final Map args; if (descriptor instanceof FunctionDescriptor) { type = ((FunctionDescriptor) descriptor).getType(); args = ((FunctionDescriptor) descriptor).getArgs(); } else if (descriptor instanceof ConditionDescriptor) { type = ((ConditionDescriptor) descriptor).getType(); args = ((ConditionDescriptor) descriptor).getArgs(); } else if (descriptor instanceof ValidatorDescriptor) { type = ((ValidatorDescriptor) descriptor).getType(); args = ((ValidatorDescriptor) descriptor).getArgs(); } else { throw new IllegalArgumentException("Invalid descriptor type"); } if ("class".equalsIgnoreCase(type) && args.containsKey("class.name")) { String className = (String) args.get("class.name"); try { final AbstractWorkflowModuleDescriptor abstractWorkflowModuleDescriptor = getWorkflowModuleDescriptor(className, pluginType); if (abstractWorkflowModuleDescriptor != null) { // We have a plugin module that can generate description HTML for us - so use it String description = abstractWorkflowModuleDescriptor.getHtml( JiraWorkflowPluginConstants.RESOURCE_NAME_VIEW, descriptor); return new WorkflowDescriptorInfo( description, orderable && abstractWorkflowModuleDescriptor.isOrderable(), delete && abstractWorkflowModuleDescriptor.isDeletable(), edit && abstractWorkflowModuleDescriptor.isEditable()); } else { // If we do not have a descriptor for the module we cannot edit it return new WorkflowDescriptorInfo(null, orderable, delete, false); } } catch (PluginParseException e) { final String message = "Cannot find module descriptors."; log.error(message, e); throw new NestableRuntimeException(message, e); } } // If we do not have a descriptor for the module we cannot edit it return new WorkflowDescriptorInfo( "Type: " + type + " with arguments " + args, orderable, delete, false); }