com.atlassian.jira.issue.label
Class CachingLabelStore

java.lang.Object
  extended by com.atlassian.jira.issue.label.CachingLabelStore
All Implemented Interfaces:
Startable, LabelStore

public class CachingLabelStore
extends Object
implements LabelStore, Startable

Caching implementation of the Label store, that caches labels in a weakhashmap based on the issue/field combination.

Since:
v4.2

Constructor Summary
CachingLabelStore(OfBizLabelStore delegateStore, com.atlassian.event.api.EventPublisher eventPublisher)
           
 
Method Summary
 Label addLabel(Long issueId, Long customFieldId, String label)
          Adds a new label to the issue for the custom field specified.
 Set<Label> getLabels(Long issueId, Long customFieldId)
          Returns all the labels for the given issue and custom field.
 void onClearCache(ClearCacheEvent event)
           
 void removeLabel(Long labelId, Long issueId, Long customFieldId)
          Removes the label identified by id
 Set<Long> removeLabelsForCustomField(Long customFieldId)
          Deletes all labels for a given custom field.
 Set<Label> setLabels(Long issueId, Long customFieldId, Set<String> labels)
          Sets the labels for a particular issue and field combo to the set specified as a parameter.
 void start()
          This method wil be called after the plugin system is fully initialised and all components added to the dependency injection framework.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CachingLabelStore

public CachingLabelStore(OfBizLabelStore delegateStore,
                         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)

getLabels

public Set<Label> getLabels(Long issueId,
                            Long customFieldId)
Description copied from interface: LabelStore
Returns all the labels for the given issue and custom field. The custom field may also be null, in which case the labels for the system field will be returned.

Specified by:
getLabels in interface LabelStore
Parameters:
issueId - The issue id that the label is linked against
customFieldId - Custom field id for the labels CF or null if it's the system field.
Returns:
A set of alphabetically ordered labels for the issue and custom field.

setLabels

public Set<Label> setLabels(Long issueId,
                            Long customFieldId,
                            Set<String> labels)
Description copied from interface: LabelStore
Sets the labels for a particular issue and field combo to the set specified as a parameter. The set may be an empty set in order to clear all labels for an issue.

Specified by:
setLabels in interface LabelStore
Parameters:
issueId - The issue id that the label is linked against
customFieldId - Custom field id for the labels CF or null if it's the system field.
labels - the new labels for this issue and custom field combo
Returns:
a set of stored label objects in alphabetical order

addLabel

public Label addLabel(Long issueId,
                      Long customFieldId,
                      String label)
Description copied from interface: LabelStore
Adds a new label to the issue for the custom field specified. If the customFieldId is null, the label will be added for the system field. Adding an existing label again, will simply return the existing label.

Specified by:
addLabel in interface LabelStore
Parameters:
issueId - The issue id that the label is linked against
customFieldId - Custom field id for the labels CF or null if it's the system field.
label - The new label to add
Returns:
The Label object that was added

removeLabel

public void removeLabel(Long labelId,
                        Long issueId,
                        Long customFieldId)
Description copied from interface: LabelStore
Removes the label identified by id

Specified by:
removeLabel in interface LabelStore
Parameters:
labelId - The id of the label to delete
issueId - The issue id that the label is linked against
customFieldId - Custom field id for the labels CF or null if it's the system field.

removeLabelsForCustomField

public Set<Long> removeLabelsForCustomField(Long customFieldId)
Description copied from interface: LabelStore
Deletes all labels for a given custom field. This is useful when deleting a custom field.

Specified by:
removeLabelsForCustomField in interface LabelStore
Parameters:
customFieldId - The custom field id for which to delete labels
Returns:
A set of issueids affected by this operation


Copyright © 2002-2012 Atlassian. All Rights Reserved.