com.atlassian.jira.workflow
Class CachingWorkflowDescriptorStore

java.lang.Object
  extended by com.atlassian.jira.workflow.CachingWorkflowDescriptorStore
All Implemented Interfaces:
WorkflowDescriptorStore

public class CachingWorkflowDescriptorStore
extends Object
implements WorkflowDescriptorStore

Used to cache workflowDescriptors in JIRA. This caches ImmutableWorkflowDescriptors. These objects are very heavy weight and ideally we would not cache them, but it is the only way to quickly give JIRA access to workflow objects. This is because the safe thing to cache is the workflow XML string but converting this to an object graph will be expensive. Also please note that the implementation of ImmutableWorkflowDescriptor cannot guarantee 100% immutability.

This is essentially replacing the store in the JiraWorkflowFactory, but it adds some more concurrency controls to ensure consistency with the underlying store (such as the OfBizWorkflowDescriptorStore)

Since:
v3.13

Constructor Summary
CachingWorkflowDescriptorStore(WorkflowDescriptorStore delegate)
           
 
Method Summary
 List<JiraWorkflowDTO> getAllJiraWorkflowDTOs()
          Returns a list of all the workflows stored in the underlying store.
 ImmutableWorkflowDescriptor getWorkflow(String name)
          Retrieves a WorkflowDescriptor from the underlying store.
 String[] getWorkflowNames()
          Returns an array of all the workflowNames stored.
 boolean removeWorkflow(String name)
          Removes a workflow from the underlying store.
 boolean saveWorkflow(String name, com.opensymphony.workflow.loader.WorkflowDescriptor workflowDescriptor, boolean replace)
          Saves or updates a workflowDescriptor.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CachingWorkflowDescriptorStore

public CachingWorkflowDescriptorStore(WorkflowDescriptorStore delegate)
Method Detail

getWorkflow

public ImmutableWorkflowDescriptor getWorkflow(String name)
                                        throws com.opensymphony.workflow.FactoryException
Description copied from interface: WorkflowDescriptorStore
Retrieves a WorkflowDescriptor from the underlying store. Returns null if no WorkflowDescriptor can be found

Specified by:
getWorkflow in interface WorkflowDescriptorStore
Parameters:
name - The workflow name
Returns:
Null or the matching WorkflowDescriptor
Throws:
com.opensymphony.workflow.FactoryException - If there's an error constructing the WorkflowDescriptor from its underlying representation

removeWorkflow

public boolean removeWorkflow(String name)
Description copied from interface: WorkflowDescriptorStore
Removes a workflow from the underlying store.

Specified by:
removeWorkflow in interface WorkflowDescriptorStore
Parameters:
name - The workflow name
Returns:
true if any records were delete, false otherwise

saveWorkflow

public boolean saveWorkflow(String name,
                            com.opensymphony.workflow.loader.WorkflowDescriptor workflowDescriptor,
                            boolean replace)
                     throws DataAccessException
Description copied from interface: WorkflowDescriptorStore
Saves or updates a workflowDescriptor. If the descriptor already exists, and the replace flag is true, an update will be done. Otherwise, this method will simply create a new value in the database (if none exists yet).

Specified by:
saveWorkflow in interface WorkflowDescriptorStore
Parameters:
name - The name of the workflow
workflowDescriptor - The WorkflowDescriptor to save/update in the underlying store
replace - true if an update should be done, if the workflow already exists, false otherwise
Returns:
true if the update was carried out successfully, false otherwise
Throws:
DataAccessException - If there was a problem, storing the workflowdescriptor

getWorkflowNames

public String[] getWorkflowNames()
Description copied from interface: WorkflowDescriptorStore
Returns an array of all the workflowNames stored.

Specified by:
getWorkflowNames in interface WorkflowDescriptorStore
Returns:
an array of all the workflowNames stored.

getAllJiraWorkflowDTOs

public List<JiraWorkflowDTO> getAllJiraWorkflowDTOs()
Description copied from interface: WorkflowDescriptorStore
Returns a list of all the workflows stored in the underlying store.

Specified by:
getAllJiraWorkflowDTOs in interface WorkflowDescriptorStore
Returns:
A list of JiraWorkflowDTOs


Copyright © 2002-2009 Atlassian. All Rights Reserved.