Class CachingLabelManager

    • Constructor Detail

      • CachingLabelManager

        public CachingLabelManager​(LabelManagerInternal delegate,
                                   com.atlassian.cache.CacheFactory cacheFactory,
                                   com.atlassian.event.api.EventListenerRegistrar eventListenerRegistrar,
                                   AdaptiveMostUsedLabelsCache adaptiveLabelManagerCache)
    • Method Detail

      • init

        @PostConstruct
        public void init()
      • destroy

        @PreDestroy
        public void destroy()
      • onTrash

        @EventListener
        public void onTrash​(Trashed trashed)
      • onRestore

        @EventListener
        public void onRestore​(Restore restore)
      • onSpaceRemove

        @EventListener
        public void onSpaceRemove​(SpaceRemoveEvent event)
      • addLabel

        public int addLabel​(Labelable content,
                            Label label)
        Description copied from interface: LabelManager
        Add a label to the specified content.

        Note: the specified label does not need to be persistent. A persistent instance of the label will be created if necessary. eg: you can write code like: labelManager.addLabel(page, new Label("name", "namespace", "owner"));

        Specified by:
        addLabel in interface LabelManager
        Returns:
        one of NO_CHANGE, LABEL_ADDED or LABEL_CREATED
      • removeLabel

        public int removeLabel​(Labelable object,
                               Label label)
        Description copied from interface: LabelManager
        Remove a label from the specified content.
        Specified by:
        removeLabel in interface LabelManager
        Returns:
        one of NO_CHANGE, LABEL_DELETED, LABEL_REMOVED
      • removeAllLabels

        public void removeAllLabels​(Labelable content)
        Description copied from interface: LabelManager
        Remove all of the labels from the specified content. Any labels that then no longer label content will be deleted.
        Specified by:
        removeAllLabels in interface LabelManager
      • deleteLabel

        public boolean deleteLabel​(long id)
        Description copied from interface: LabelManager
        Delete the label with the specified id.
        Specified by:
        deleteLabel in interface LabelManager
        Returns:
        true if the label was deleted, false otherwise.
      • deleteLabel

        public boolean deleteLabel​(Label l)
        Description copied from interface: LabelManager
        Delete the specified label.

        NOTE: The specified label does note need to be the persistent instance of the label, it simply needs to uniquely identify the label.

        Specified by:
        deleteLabel in interface LabelManager
        Returns:
        true if the label was deleted, false otherwise.
      • getLabel

        public Label getLabel​(long id)
        Description copied from interface: LabelManager
        Retrieve the label with the specified id.
        Specified by:
        getLabel in interface LabelManager
        Returns:
        the persistent instance of label with the specified id, or null if none exists.
      • getLabel

        public Label getLabel​(String unparsedLabelName)
        Description copied from interface: LabelManager
        convenience method to fetch a label without having to call the label parser
        Specified by:
        getLabel in interface LabelManager
        Parameters:
        unparsedLabelName - - example - my:foo
      • getLabels

        public List<Label> getLabels​(Collection<String> unparsedLabelNames)
        Description copied from interface: LabelManager
        convenience method to fetch labels without having to call the label parser
        Specified by:
        getLabels in interface LabelManager
        Parameters:
        unparsedLabelNames - - example - my:foo, bar
      • getLabel

        public Label getLabel​(Label label)
        Description copied from interface: LabelManager
        Retrieve the persistent instance of the label with the exact same details as the specified label. Note, the specified label does not need to contain an id.
        Specified by:
        getLabel in interface LabelManager
        Returns:
        a persistent instance of the label, or null if it does not exist.
      • getLabel

        public Label getLabel​(String labelName,
                              Namespace namespace)
        Description copied from interface: LabelManager
        Convenience method to fetch a label without having to create a Label object
        Specified by:
        getLabel in interface LabelManager
        Parameters:
        labelName - The label name
        namespace - The namespace of the label
        Returns:
        a label instance or null if no such label exists
      • getLabelsByDetail

        public List<Label> getLabelsByDetail​(String labelName,
                                             String namespace,
                                             String spaceKey,
                                             String owner)
        Description copied from interface: LabelManager
        Retrieves the labels matching the given labelName, namespace or owner
        Specified by:
        getLabelsByDetail in interface LabelManager
        Parameters:
        labelName - The name of the label (null to ignore)
        namespace - The namespace of the labels (null to ignore)
        spaceKey - The spaceKey to restrict by (null to ignore)
        owner - The owner of the labels (null to ignore)
        Returns:
        a list of Label instances
      • getLabelsInSpace

        public List<Label> getLabelsInSpace​(String key)
        Description copied from interface: LabelManager
        Retrieve all of the labels that label content within the specified space.
        Specified by:
        getLabelsInSpace in interface LabelManager
        Parameters:
        key - identifying the space to be queried.
        Returns:
        a list of labels that appear in the space.
      • getMostPopularLabels

        public List<LabelSearchResult> getMostPopularLabels​(int maxResults)
        Description copied from interface: LabelManager
        Retrieve the most popular labels within the system. The number of labels returned can be specified through the count parameter. If the count value is greater than the number of labels, then all labels will be returned.

        This function does not return the labels itself, but wrapped into a search result with a count!

        Specified by:
        getMostPopularLabels in interface LabelManager
        Parameters:
        maxResults - is the maximum number of labels to be returned.
        Returns:
        a list of label search result instances in order of their popularity.
        See Also:
        LabelSearchResult
      • getMostPopularLabelsInSpace

        public List<LabelSearchResult> getMostPopularLabelsInSpace​(String spaceKey,
                                                                   int maxResults)
        Description copied from interface: LabelManager
        Retrieve a list of the 'n' most used labels in the specified space, ordered from most popular to least popular.

        This function does not return the labels itself, but wrapped into a search result with a count!

        Specified by:
        getMostPopularLabelsInSpace in interface LabelManager
        Parameters:
        spaceKey - is the space key
        maxResults - is the maximum number of labels to be returned.
        Returns:
        a list of label search result instances in order of their popularity.
        See Also:
        LabelSearchResult
      • getMostPopularLabelsWithRanks

        public Set<RankedLabelSearchResult> getMostPopularLabelsWithRanks​(int maxResults,
                                                                          Comparator<? super RankedLabelSearchResult> comparator)
        Description copied from interface: LabelManager
        Retrieve the most popular labels within the system, including their ranks and ordered using the comparator provided. The number of labels returned can be specified through the count parameter. If the count value is greater than the number of labels, then all labels will be returned.

        This function does not return the labels itself, but wrapped into a search result with a count!

        Specified by:
        getMostPopularLabelsWithRanks in interface LabelManager
        Parameters:
        maxResults - is the maximum number of labels to be returned.
        Returns:
        an ordered set of ranked label search result instances
        See Also:
        RankedLabelSearchResult
      • getRecentlyUsedLabels

        public List<Label> getRecentlyUsedLabels​(int maxResults)
        Description copied from interface: LabelManager
        Retrieve the x most recently used labels.
        Specified by:
        getRecentlyUsedLabels in interface LabelManager
        Parameters:
        maxResults - is the maximum number of labels to be returned.
        Returns:
        a list of label instances in order of most recently used to least recently used.
      • getRecentlyUsedLabelsInSpace

        public List<Label> getRecentlyUsedLabelsInSpace​(String spaceKey)
        Description copied from interface: LabelManager
        Retrieve the DEFAULT_LABEL_COUNT most recently used labels within the specified space.
        Specified by:
        getRecentlyUsedLabelsInSpace in interface LabelManager
        Parameters:
        spaceKey - identifies the space to which the results are restricted.
        Returns:
        a list of label instances in order of most recently used to least recently used.
        See Also:
        LabelManager.DEFAULT_LABEL_COUNT
      • getRecentlyUsedLabelsInSpace

        public List<Label> getRecentlyUsedLabelsInSpace​(String spaceKey,
                                                        int maxResults)
        Description copied from interface: LabelManager
        Retrieve the most recently used labels within the specified spae.
        Specified by:
        getRecentlyUsedLabelsInSpace in interface LabelManager
        maxResults - is the maximum number of labels to be returned.
        Returns:
        a list of label instances in order of the most recently used to least recently used.
      • getSuggestedLabels

        public List<Label> getSuggestedLabels​(Labelable content)
        Description copied from interface: LabelManager
        Retrieve the DEFAULT_LABEL_COUNT suggested labels for the specified content. The process used to identify 'suggested' labels may change and therefore is not defined here.
        Specified by:
        getSuggestedLabels in interface LabelManager
        Returns:
        a list of label instances. The order of these labels is undefined.
        See Also:
        LabelManager.DEFAULT_LABEL_COUNT
      • getSuggestedLabels

        public List<Label> getSuggestedLabels​(Labelable content,
                                              int maxResults)
        Description copied from interface: LabelManager
        Retrieve the suggested labels for the specified content. The process used to identify 'suggested' labels may change and therefore is not defined here.
        Specified by:
        getSuggestedLabels in interface LabelManager
        maxResults - is the maximum number of labels to be returned.
        Returns:
        a list of label instances. The order of these labels is undefined.
      • getSuggestedLabelsInSpace

        public List<Label> getSuggestedLabelsInSpace​(Labelable content,
                                                     String spaceKey,
                                                     int maxResults)
        Description copied from interface: LabelManager
        Retrieve the suggested labels for the specified content bound to the specified space.
        Specified by:
        getSuggestedLabelsInSpace in interface LabelManager
        maxResults - is the maximum number of labels to be returned.
        Returns:
        a list of label instances. The order of these labels is undefined.
      • getRelatedLabels

        public List<Label> getRelatedLabels​(Label label)
        Description copied from interface: LabelManager
        Retrieve the DEFAULT_LABEL_COUNT labels that are 'related' to the specified label. The process used to identify 'related' labels may change and therefore is not define here.
        Specified by:
        getRelatedLabels in interface LabelManager
        Returns:
        a list of label instances. The order of these labels is undefined.
        See Also:
        LabelManager.DEFAULT_LABEL_COUNT
      • getRelatedLabels

        public List<Label> getRelatedLabels​(Label label,
                                            int maxResults)
        Description copied from interface: LabelManager
        Retrieve the labels that are 'related' to the specified label. The process used to identify 'related' labels may change and therefore is not defined here.
        Specified by:
        getRelatedLabels in interface LabelManager
        maxResults - is the maximum number of labels to be returned.
        Returns:
        a list of label instances. The order of these labels is undefined.
      • getRelatedLabels

        public List<Label> getRelatedLabels​(List<? extends Label> labels,
                                            String spaceKey,
                                            int maxResultsPerLabel)
        Description copied from interface: LabelManager
        Retrieve the labels that are 'related' to the labels in the list. The process used to identify 'related' labels may change and therefore is not defined here.
        Specified by:
        getRelatedLabels in interface LabelManager
        spaceKey - - may be null to search globally
        maxResultsPerLabel - is the maximum number of labels to be returned for each label.
        Returns:
        a list of label instances. The order of these labels is undefined.
      • getRelatedLabelsInSpace

        public List<Label> getRelatedLabelsInSpace​(Label label,
                                                   String spaceKey,
                                                   int maxResults)
        Description copied from interface: LabelManager
        Retrieve the labels that are 'related' to the specified label and that are used to to label content within the specified space.
        Specified by:
        getRelatedLabelsInSpace in interface LabelManager
        Returns:
        a list of label instance. The order of these labels is undefined.
      • getSpacesContainingContentWithLabel

        public List<Space> getSpacesContainingContentWithLabel​(Label label)
        Description copied from interface: LabelManager
        Look up the spaces that have been labelled by the specific label.
        Specified by:
        getSpacesContainingContentWithLabel in interface LabelManager
        Returns:
        a list of Spaces. The order of these labels is undefined.
      • getTeamLabels

        public List<Label> getTeamLabels()
        Description copied from interface: LabelManager
        Retrieve all of the team labels in the system.
        Specified by:
        getTeamLabels in interface LabelManager
        Returns:
        a list of labels with the namespace Namespace.TEAM
      • getTeamLabels

        public List<Label> getTeamLabels​(String name)
        Description copied from interface: LabelManager
        Retrieve all of the team labels in the system with name.
        Specified by:
        getTeamLabels in interface LabelManager
        Returns:
        a list of labels with the namespace Namespace.TEAM
      • getTeamLabelsForSpace

        public List<Label> getTeamLabelsForSpace​(String spaceKey)
        Description copied from interface: LabelManager
        Retrieve all of the team labels used to label content in the specified space.
        Specified by:
        getTeamLabelsForSpace in interface LabelManager
        Returns:
        a list of team labels with the namespace Namespace.TEAM. The order of the list is undefined.
      • getTeamLabelsForSpaces

        public List<Label> getTeamLabelsForSpaces​(Collection<Space> spaces)
        Description copied from interface: LabelManager
        Retrieve all of the team labels used to label content in the specified spaces.
        Specified by:
        getTeamLabelsForSpaces in interface LabelManager
        Parameters:
        spaces - collection of spaces whose labels to get
        Returns:
        a list of team labels with the namespace Namespace.TEAM. The order of the list is undefined.
      • getCurrentContentForLabel

        public List<? extends Labelable> getCurrentContentForLabel​(Label label)
        Description copied from interface: LabelManager
        Get all content associated with a label and space Get all current content associated with a label and any space. Content in the trash will not be returned.
        Specified by:
        getCurrentContentForLabel in interface LabelManager
        Returns:
        a list of Labelables, sorted by last modification date
      • getSpacesWithLabel

        public List<Space> getSpacesWithLabel​(Label label)
        Description copied from interface: LabelManager
        Spaces cannot be directly labelled. Howevever, their space descriptions can. This method searches for all space descriptions with the label passed in
        Specified by:
        getSpacesWithLabel in interface LabelManager
        Returns:
        list of spaces associated with matching space descriptions
      • getFavouriteLabellingsByContentIds

        public List<Labelling> getFavouriteLabellingsByContentIds​(Collection<ContentId> contentIds,
                                                                  com.atlassian.sal.api.user.UserKey userKey)
        Description copied from interface: LabelManager
        Get the labellings that represent the favourite labellings for the given user on the given content.
        Specified by:
        getFavouriteLabellingsByContentIds in interface LabelManager
        Parameters:
        contentIds - the contentIds to get favourite labellings for
        userKey - the key of the user to get favourite labellings for
        Returns:
        the labellings that represent the favourite labellings for the given user on the given content.
      • getRecentlyUsedPersonalLabels

        public List<Label> getRecentlyUsedPersonalLabels​(String username)
        Description copied from interface: LabelManager
        Retrieve the labels that were recently used by currently authenticated user. 'Recently Used' includes labels that the user recently added, created, removed and deleted.

        Note: labels in this list may or may not exist.

        The UserHistory can be retrieved from the session via the ActionContext (if using an action) or the Execution Context (DWR)

        Specified by:
        getRecentlyUsedPersonalLabels in interface LabelManager
        Parameters:
        username - the user history from the session
        Returns:
        a list of labels
      • getRecentlyUsedPersonalLabels

        public List<Label> getRecentlyUsedPersonalLabels​(String username,
                                                         int maxResults)
        Description copied from interface: LabelManager
        Retrieve the labels that were recently used by currently authenticated user. 'Recently Used' includes labels that the user recently added, created, removed and deleted.

        Note: labels in this list may or may not exist.

        The UserHistory can be retrieved from the session via the ActionContext (if using an action) or the Execution Context (DWR)

        Specified by:
        getRecentlyUsedPersonalLabels in interface LabelManager
        Parameters:
        username - the user history from the session
        maxResults - the maximum number of results to return to the user
        Returns:
        a list of labels
      • getContent

        public List getContent​(Label label)
        Description copied from interface: LabelManager
        Get all content associated with a label Get all versions of content associated with a label and any space. Content in the trash WILL be returned.
        Specified by:
        getContent in interface LabelManager
        Returns:
        a list of Labelables
      • getContentForLabel

        public PartialList<ContentEntityObject> getContentForLabel​(int offset,
                                                                   int maxResults,
                                                                   Label label)
        Description copied from interface: LabelManager
        Retrieve current ContentEntityObjects which are labelled with the provided label.

        ContentEntityObjects in the Trash will *not* be returned.

        Specified by:
        getContentForLabel in interface LabelManager
        Parameters:
        offset - the offset into the results
        maxResults - the maximum number of results to return
        label - label which must appear on ContentEntityObjects
        Returns:
        a partial list of ContentEntityObjects labelled with the labels provided
      • getForLabel

        public <T extends EditableLabelablePartialList<T> getForLabel​(Class<T> labelableClass,
                                                                        int offset,
                                                                        int maxResults,
                                                                        Label label)
        Description copied from interface: LabelManager
        Retrieve EditableLabelables of the supplied type which are labelled with the provided label.

        ContentEntityObjects in the Trash *will* be returned.

        Specified by:
        getForLabel in interface LabelManager
        Parameters:
        labelableClass - the type of labelable to return. Use one of these values:
        • ContentEntityObject.class - all CEO labelings except Attachments
        • Attachment.class - all attachment labellings
        • PageTemplate.class - all page template labellings
        offset - the offset into the results
        maxResults - the maximum number of results to return
        label - label which must appear on labelables
        Returns:
        a partial list of EditableLabelables labelled with the labels provided
      • getForLabels

        public <T extends EditableLabelablePartialList<T> getForLabels​(Class<T> labelableClass,
                                                                         int offset,
                                                                         int maxResults,
                                                                         Label... labels)
        Description copied from interface: LabelManager
        Retrieve EditableLabelables of the supplied type which are labelled with the provided labels.

        ContentEntityObjects in the Trash will *not* be returned.

        Specified by:
        getForLabels in interface LabelManager
        Parameters:
        labelableClass - the type of labelable to return. Use one of these values:
        • ContentEntityObject.class - all CEO labelings except Attachments
        • Attachment.class - all attachment labellings
        • PageTemplate.class - all page template labellings
        offset - the offset into the results
        maxResults - the maximum number of results to return
        labels - labels which must all appear on labelables
        Returns:
        a partial list of EditableLabelables labelled with the labels provided
      • getForLabels

        public PartialList<EditableLabelable> getForLabels​(int offset,
                                                           int maxResults,
                                                           Label... labels)
        Description copied from interface: LabelManager
        Retrieve EditableLabelables of any type which are labelled with the provided labels.

        ContentEntityObjects in the Trash *will* be returned.

        Specified by:
        getForLabels in interface LabelManager
        Parameters:
        offset - the offset into the results
        maxResults - the maximum number of results to return
        labels - labels which must all appear on labelables
        Returns:
        a partial list of EditableLabelables labelled with the labels provided
      • getContentForAllLabels

        public PartialList<ContentEntityObject> getContentForAllLabels​(int offset,
                                                                       int maxResults,
                                                                       Label... labels)
        Description copied from interface: LabelManager
        Retrieve current ContentEntityObjects which are labelled with ALL provided labels.

        ContentEntityObjects in the Trash will *not* be returned.

        Specified by:
        getContentForAllLabels in interface LabelManager
        Parameters:
        offset - the offset into the results
        maxResults - the maximum number of results to return
        labels - labels which must appear on ContentEntityObjects
        Returns:
        a partial list of ContentEntityObjects labelled with the labels provided
      • getContentInSpaceForLabel

        public PartialList<ContentEntityObject> getContentInSpaceForLabel​(int offset,
                                                                          int maxResults,
                                                                          String spaceKey,
                                                                          Label label)
        Description copied from interface: LabelManager
        Retrieve current ContentEntityObjects in the given space which are labelled with the provided label.

        ContentEntityObjects in the Trash will *not* be returned.

        Specified by:
        getContentInSpaceForLabel in interface LabelManager
        Parameters:
        offset - the offset into the results
        maxResults - the maximum number of results to return
        spaceKey - the key of the space to search content in
        label - label which must appear on ContentEntityObjects
        Returns:
        a partial list of ContentEntityObjects labelled with the labels provided
      • getContentInSpaceForAllLabels

        public PartialList<ContentEntityObject> getContentInSpaceForAllLabels​(int offset,
                                                                              int maxResults,
                                                                              String spaceKey,
                                                                              Label... labels)
        Description copied from interface: LabelManager
        Retrieve current ContentEntityObjects in the given space which are labelled with ALL provided labels.

        ContentEntityObjects in the Trash will *not* be returned.

        Specified by:
        getContentInSpaceForAllLabels in interface LabelManager
        Parameters:
        offset - the offset into the results
        maxResults - the maximum number of results to return
        spaceKey - the key of the space to search content in
        labels - labels which must appear on ContentEntityObjects
        Returns:
        a partial list of ContentEntityObjects labelled with the labels provided
      • getContentInSpacesForAllLabels

        public PartialList<ContentEntityObject> getContentInSpacesForAllLabels​(int offset,
                                                                               int maxResults,
                                                                               Set<String> spaceKeys,
                                                                               Label... labels)
        Description copied from interface: LabelManager
        Retrieve current ContentEntityObjects in the given spaces which are labelled with ALL provided labels.

        ContentEntityObjects in the Trash will *not* be returned.

        Specified by:
        getContentInSpacesForAllLabels in interface LabelManager
        Parameters:
        offset - the offset into the results
        maxResults - the maximum number of results to return
        spaceKeys - the keys of the spaces to search content in
        labels - labels which must appear on ContentEntityObjects
        Returns:
        a partial list of ContentEntityObjects labelled with the labels provided
      • getAllContentForLabel

        public PartialList<ContentEntityObject> getAllContentForLabel​(int offset,
                                                                      int maxResults,
                                                                      Label label)
        Description copied from interface: LabelManager
        Retrieve all ContentEntityObjects, current or deleted which are labelled with the provided label.

        ContentEntityObjects in the Trash *will* be returned.

        Specified by:
        getAllContentForLabel in interface LabelManager
        Parameters:
        offset - the offset into the results
        maxResults - the maximum number of results to return
        label - label which must appear on ContentEntityObjects
        Returns:
        a partial list of ContentEntityObjects labelled with the labels provided
      • getAllContentForAllLabels

        public PartialList<ContentEntityObject> getAllContentForAllLabels​(int offset,
                                                                          int maxResults,
                                                                          Label... labels)
        Description copied from interface: LabelManager
        Retrieve all ContentEntityObjects, current or deleted which are labelled with ALL provided labels.

        ContentEntityObjects in the Trash *will* be returned.

        Specified by:
        getAllContentForAllLabels in interface LabelManager
        Parameters:
        offset - the offset into the results
        maxResults - the maximum number of results to return
        labels - labels which must appear on ContentEntityObjects
        Returns:
        a partial list of ContentEntityObjects labelled with the labels provided
      • getMostPopularLabelsInSpaceLite

        public List<LiteLabelSearchResult> getMostPopularLabelsInSpaceLite​(String spaceKey,
                                                                           int maxResults)
        Returns most used labels. Similar to getMostPopularLabelsInSpace, but returns lite objects (no references to hibernate objects).
        Specified by:
        getMostPopularLabelsInSpaceLite in interface LabelManager
        Parameters:
        spaceKey - - space key
        maxResults - - limit
        Returns:
        list of LiteLabelSearchResult
      • getMostPopularLabelsInSiteLite

        public List<LiteLabelSearchResult> getMostPopularLabelsInSiteLite​(int maxResults)
        Returns most used labels across the site. Similar to getMostPopularLabels, but returns lite objects (no references to hibernate objects). Note: implementation would limit the amount of labels.
        Specified by:
        getMostPopularLabelsInSiteLite in interface LabelManager
        Parameters:
        maxResults - - max results
        Returns:
        list of LiteLabelSearchResult