com.atlassian.jira.workflow
Class CachingDraftWorkflowStore

java.lang.Object
  extended by com.atlassian.jira.workflow.CachingDraftWorkflowStore
All Implemented Interfaces:
Startable, DraftWorkflowStore

public class CachingDraftWorkflowStore
extends Object
implements DraftWorkflowStore, Startable

Provides a caching implementation of the DraftWorkflowStore. This implementation ensures cache consistency by using a ConcurrentMap for the store, and a ReentrantReadWriteLock to ensure that any updates of the database (and cache) are atomic. The lock is a ReadWriteLock, to speed up performance for gets which will be the most common operation.

Since:
v3.13

Constructor Summary
CachingDraftWorkflowStore(DraftWorkflowStore delegate, com.atlassian.event.api.EventPublisher eventPublisher)
           
 
Method Summary
 JiraWorkflow createDraftWorkflow(String authorName, JiraWorkflow parentWorkflow)
          Creates a temporary workflow linked back to the named active workflow by id.
 boolean deleteDraftWorkflow(String parentWorkflowName)
          Removes a temporary workflow linked to the workflow name.
 JiraWorkflow getDraftWorkflow(String parentWorkflowName)
          This will retrieve an draft workflow that is related to the named saved workflow.
 void onClearCache(ClearCacheEvent event)
           
 void start()
          This method wil be called after the plugin system is fully initialised and all components added to the dependency injection framework.
 JiraWorkflow updateDraftWorkflow(String username, String parentWorkflowName, JiraWorkflow workflow)
          Updates a temporary workflow with the one provided for the parent workflow name passed in.
 JiraWorkflow updateDraftWorkflowWithoutAudit(String parentWorkflowName, JiraWorkflow workflow)
          Updates a temporary workflow with the one provided for the parent workflow name passed in.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CachingDraftWorkflowStore

public CachingDraftWorkflowStore(DraftWorkflowStore delegate,
                                 com.atlassian.event.api.EventPublisher eventPublisher)
Method Detail

start

public void start()
           throws Exception
Description copied from interface: Startable
This method wil be called after the plugin system is fully initialised and all components added to the dependency injection framework.

Specified by:
start in interface Startable
Throws:
Exception - Allows implementations to throw an Exception.

onClearCache

@EventListener
public void onClearCache(ClearCacheEvent event)

getDraftWorkflow

public JiraWorkflow getDraftWorkflow(String parentWorkflowName)
                              throws DataAccessException
Description copied from interface: DraftWorkflowStore
This will retrieve an draft workflow that is related to the named saved workflow. If an draft workflow is not associated with the passed in name this will return null.

Specified by:
getDraftWorkflow in interface DraftWorkflowStore
Parameters:
parentWorkflowName - of the saved parent workflow.
Returns:
workflow that represents the draft "copy" of the named active workflow. This will be of type JiraDraftWorkflow.
Throws:
DataAccessException - DataAccessException

createDraftWorkflow

public JiraWorkflow createDraftWorkflow(String authorName,
                                        JiraWorkflow parentWorkflow)
                                 throws DataAccessException,
                                        IllegalStateException,
                                        IllegalArgumentException
Description copied from interface: DraftWorkflowStore
Creates a temporary workflow linked back to the named active workflow by id. If a temporary workflow already exists, this method will throw an exception.

Specified by:
createDraftWorkflow in interface DraftWorkflowStore
Parameters:
authorName - The username of the user making the edit
parentWorkflow - The parent workflow to copy for the draft workflow.
Returns:
workflow that represents the draft "copy" of the named active workflow. This will be of type JiraDraftWorkflow.
Throws:
DataAccessException - if there are any db errors
IllegalStateException - thrown if you are adding an draft workflow which already exists for the provided parent workflow
IllegalArgumentException - If the username is null

deleteDraftWorkflow

public boolean deleteDraftWorkflow(String parentWorkflowName)
                            throws DataAccessException,
                                   IllegalArgumentException
Description copied from interface: DraftWorkflowStore
Removes a temporary workflow linked to the workflow name.

Specified by:
deleteDraftWorkflow in interface DraftWorkflowStore
Parameters:
parentWorkflowName - of the saved parent workflow.
Returns:
True if deleted successfully
Throws:
DataAccessException - RuntimeException wrapper around a DB Exception.
IllegalArgumentException

updateDraftWorkflow

public JiraWorkflow updateDraftWorkflow(String username,
                                        String parentWorkflowName,
                                        JiraWorkflow workflow)
                                 throws DataAccessException
Description copied from interface: DraftWorkflowStore
Updates a temporary workflow with the one provided for the parent workflow name passed in. Throws an exception, if no temporary workflow exists for the one being updated.

Specified by:
updateDraftWorkflow in interface DraftWorkflowStore
Parameters:
username - is the username of the user updating this draft workflow.
parentWorkflowName - of the saved parent workflow.
workflow - The JiraWorkflow to use for the update.
Returns:
workflow that represents the draft "copy" of the named active workflow. This will be of type JiraDraftWorkflow.
Throws:
DataAccessException - RuntimeException wrapper around a DB Exception.

updateDraftWorkflowWithoutAudit

public JiraWorkflow updateDraftWorkflowWithoutAudit(String parentWorkflowName,
                                                    JiraWorkflow workflow)
                                             throws DataAccessException
Description copied from interface: DraftWorkflowStore
Updates a temporary workflow with the one provided for the parent workflow name passed in. Throws an exception, if no temporary workflow exists for the one being updated. This will not update the draft author or the draft date. This method should only be used by upgrade tasks. Use DraftWorkflowStore.updateDraftWorkflow(String, String, JiraWorkflow) instead.

Specified by:
updateDraftWorkflowWithoutAudit in interface DraftWorkflowStore
Parameters:
parentWorkflowName - of the saved parent workflow.
workflow - The JiraWorkflow to use for the update.
Returns:
workflow that represents the draft "copy" of the named active workflow. This will be of type JiraDraftWorkflow.
Throws:
DataAccessException - RuntimeException wrapper around a DB Exception.


Copyright © 2002-2011 Atlassian. All Rights Reserved.