Class IssueProviderWrapper

    • Constructor Detail

    • Method Detail

      • getId

        @NotNull
        public String getId()
        Description copied from interface: IssueProviderEx
        Returns a short id of the provider, e.g. "jira", "bugzilla", "youtrack", etc. The id is unique, immutable and consists of alpha-numeric characters.
        Specified by:
        getId in interface IssueProviderEx
        Returns:
        provider id
      • getName

        @NotNull
        public String getName()
        Description copied from interface: IssueProviderEx
        Returns the name of the issue tracking system corresponding to this provider.
        Specified by:
        getName in interface IssueProviderEx
        Returns:
        provider name
      • getUrl

        @NotNull
        public String getUrl()
        Description copied from interface: IssueProviderEx
        Returns the provider's URL, e.g. "http://www.jetbrains.net/tracker/".
        Specified by:
        getUrl in interface IssueProviderEx
        Returns:
        provider's url
      • getProject

        @NotNull
        public SProject getProject()
        Description copied from interface: IssueProviderEx
        Returns project to which current issue provider belongs
        Specified by:
        getProject in interface IssueProviderEx
        Returns:
        id of the project
      • getUsername

        @NotNull
        public String getUsername()
        Description copied from interface: IssueProviderEx
        Returns the username configured for the provider, or empty string if not set.
        Specified by:
        getUsername in interface IssueProviderEx
        Returns:
        provider's username
      • getType

        @NotNull
        public String getType()
        Description copied from interface: IssueProvider
        Returns the type of this provider (the type of the corresponding factory). The type is immutable and consists of alpha-numeric characters.
        Specified by:
        getType in interface IssueProvider
        Returns:
        provider type
      • getRelatedIssues

        @NotNull
        public Collection<IssueMention> getRelatedIssues​(@NotNull
                                                         String comment)
        Description copied from interface: IssueProvider
        Returns the collection of issues related, or mentioned in the comment. The relation can be defined by a mention in the text (a mention means that comment contains the substring that matches a certain pattern), or by any way the plugin chooses.
        Specified by:
        getRelatedIssues in interface IssueProvider
        Parameters:
        comment - the comment
        Returns:
        collection of related issues
        See Also:
        IssueProvider.isHasRelatedIssues(String)
      • isHasRelatedIssues

        public boolean isHasRelatedIssues​(@NotNull
                                          String comment)
        Description copied from interface: IssueProvider
        Returns whether there are related issues in the specified comment. The relation can be defined by a mention in the text (a mention means that comment contains the substring that matches a certain pattern), or by any way the plugin chooses.
        Specified by:
        isHasRelatedIssues in interface IssueProvider
        Parameters:
        comment - the comment
        Returns:
        true if the comment has related issues
        See Also:
        IssueProvider.getRelatedIssues(String)
      • findIssueById

        public IssueData findIssueById​(@NotNull
                                       String id)
        Description copied from interface: IssueProvider
        Returns the issue by the specified id. Returned data isn't expected to be up-to-date, i.e. fetched from the ITS at the moment of call.

        The implementors are encouraged to report retrieving errors by throwing RetrieveIssueException, rather than simply return null: NotFoundException when the issue cannot be found, UnsupportedException when the issue tracker protocol is not supported, etc.

        Specified by:
        findIssueById in interface IssueProvider
        Parameters:
        id - issue id
        Returns:
        the corresponding issue, or null if the issue cannot be retrieved
      • isBatchFetchSupported

        public boolean isBatchFetchSupported()
        Description copied from interface: IssueBatchProviderSupport
        Returns whether the issue provider supports fetching in batch.

        Note: the method is always fast.

        Specified by:
        isBatchFetchSupported in interface IssueBatchProviderSupport
        Returns:
        true if the issue provider supports fetching in batch
      • findIssuesByIds

        public Map<String,​IssueData> findIssuesByIds​(@NotNull
                                                           Collection<String> ids)
        Description copied from interface: IssueBatchProviderSupport
        Finds and returns the specified collection of issue ids. If current provider does not support batch fetching, null is returned.

        Note: the method is not necessarily fast, and should be called in a separate issue.

        Specified by:
        findIssuesByIds in interface IssueBatchProviderSupport
        Parameters:
        ids - the collection of issue ids to fetch
        Returns:
        the map issue id -> issue data, or null
      • getProperties

        @NotNull
        public Map<String,​String> getProperties()
        Description copied from interface: IssueProvider
        Returns the map of provider properties. This map includes all fields that are configured in admin UI and stored in TeamCity config file (e.g. credentials used in all communications with remote server, server url, etc, but not the id or type).

        The keys should consist of alphanumeric characters and start with a letter.

        Specified by:
        getProperties in interface IssueProvider
        Returns:
        the properties map
      • findPossiblyExpiredIssue

        public IssueData findPossiblyExpiredIssue​(@NotNull
                                                  String id)
        Description copied from interface: SIssueProvider
        Returns the issue data corresponding to the id.

        The main difference from IssueProvider.findIssueById(String) method is that method must be always fast (should use only cached data) and the result data isn't expected to be up-to-date. So this method should return the issue data if by chance it can be retrieved fast, even if a provider considers it out-dated and IssueProvider.findIssueById(String) method would make an extra call to the issue-tracking system.

        The simplest (100% legal) implementation of this method:

            public IssueData findPossiblyExpiredIssue(@NotNull String id) {
              return null;
            }
         
        This way TeamCity will always show 'Retrieving...' message, when the issue isn't fetched (see SIssueProvider.isFetched(String)).
        Specified by:
        findPossiblyExpiredIssue in interface SIssueProvider
        Parameters:
        id - the issue id
        Returns:
        issue data, or null if the it cannot be returned efficiently
      • isFailedToFetch

        public boolean isFailedToFetch​(@NotNull
                                       String id)
        Description copied from interface: SIssueProvider
        Returns whether the issue could not be fetched due to error.

        In case of true, the issue data isn't in a cache (i.e. isFetched(id) == false), but the error is.

        Specified by:
        isFailedToFetch in interface SIssueProvider
        Parameters:
        id - the issue id
        Returns:
        true if issue could not be fetched
        See Also:
        SIssueProvider.isFetched(String)
      • getConfigurationSummary

        public String getConfigurationSummary()
        Description copied from interface: SIssueProvider
        Returns the basic summary of current configuration, for instance, "Jira" provider might return: "Projects: P1, P2".
        Specified by:
        getConfigurationSummary in interface SIssueProvider
        Returns:
        provider configuration summary, or null
      • setProperties

        public void setProperties​(@NotNull
                                  Map<String,​String> map)
        Description copied from interface: IssueProvider
        Sets the provider properties (see IssueProvider.getProperties() method for the details).

        Few words about thread-safety: properties can be changed from the admin UI, or in config file. By any of these events this method is called (synchronously). Hence this method should lock any other API method.

        Specified by:
        setProperties in interface IssueProvider
        Parameters:
        map - a properties map
        See Also:
        IssueProvider.getProperties()
      • dispose

        public void dispose()
        Description copied from interface: IssueProvider
        Disposes the provider (releases all necessary resources, dumps caches on disk, etc). This method is called when the provider is deleted from the system, and on server shutdown.
        Specified by:
        dispose in interface IssueProvider
      • getAssociatedProjects

        @Nullable
        public Set<String> getAssociatedProjects()
        Description copied from interface: IssueProviderEx
        Returns the list of project internal ids associated with this provider. If the value is not null, the provider will only be applied to returned projects. If the value is null, all projects are applied.

        Compatibility: in earlier TeamCity versions the effective value used in null.

        Specified by:
        getAssociatedProjects in interface IssueProviderEx
        Returns:
        list of associated project internal ids, or null
      • isApplicableInProjectFreeContext

        public boolean isApplicableInProjectFreeContext()
        Description copied from interface: IssueProviderEx
        Returns whether the provider can be applied in the context without any project.

        Compatibility: in earlier TeamCity versions the effective value used is true.

        Specified by:
        isApplicableInProjectFreeContext in interface IssueProviderEx
        Returns:
        true iff the provider is applicable in the project-free context
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object