This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch ignite-10930
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/ignite-10930 by this push:
     new 8dbba4d  IGNITE-10930: PR-less contributions: loaded JIRA tickets from 
the DB
8dbba4d is described below

commit 8dbba4d7d7b8bfe983a0ac2856aa6028d1a5eb6c
Author: Dmitriy Pavlov <dpav...@apache.org>
AuthorDate: Mon Jan 14 20:14:36 2019 +0300

    IGNITE-10930: PR-less contributions: loaded JIRA tickets from the DB
---
 .../main/java/org/apache/ignite/ci/TcHelper.java   | 23 +------
 .../org/apache/ignite/ci/di/IgniteTcBotModule.java | 13 ++--
 .../ignite/ci/jira/ignited/IJiraIgnited.java       | 26 +++++++
 .../apache/ignite/ci/jira/ignited/JiraIgnited.java | 60 ++++++++++++++++
 .../ignite/ci/jira/ignited/JiraIgnitedModule.java  |  2 +
 .../ignite/ci/jira/ignited/JiraTicketSync.java     | 32 ++++-----
 .../ignite/ci/jira/pure/IJiraIntegration.java      | 38 ++++++----
 .../java/org/apache/ignite/ci/jira/pure/Jira.java  | 20 ++----
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 80 ++++++++++++++++------
 .../ci/teamcity/ignited/TeamcityIgnitedImpl.java   | 37 ----------
 .../java/org/apache/ignite/ci/web/model/Visa.java  |  6 +-
 11 files changed, 205 insertions(+), 132 deletions(-)

diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
index 459a669..a1e275d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
@@ -17,36 +17,15 @@
 
 package org.apache.ignite.ci;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
-import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.inject.Inject;
-import org.apache.ignite.ci.jira.Tickets;
-import org.apache.ignite.ci.tcbot.issue.IssueDetector;
 import org.apache.ignite.ci.issue.IssuesStorage;
-import org.apache.ignite.ci.jira.pure.IJiraIntegration;
-import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
-import org.apache.ignite.ci.tcmodel.result.Build;
-import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
-import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
-import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
-import org.apache.ignite.ci.teamcity.ignited.buildtype.BuildTypeRefCompacted;
-import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
+import org.apache.ignite.ci.tcbot.issue.IssueDetector;
 import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.user.UserAndSessionsStorage;
-import org.apache.ignite.ci.web.model.JiraCommentResponse;
-import org.apache.ignite.ci.web.model.Visa;
-import org.apache.ignite.ci.web.model.current.SuiteCurrentStatus;
-import org.apache.ignite.ci.web.model.current.TestFailure;
-import org.apache.ignite.ci.web.model.hist.FailureSummary;
 import org.jetbrains.annotations.Nullable;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.ignite.ci.util.XmlUtil.xmlEscapeText;
 
 /**
  * TC Bot implementation. To be migrated to smaller injected classes
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
index e58d398..e45db99 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
@@ -21,6 +21,10 @@ import com.google.inject.AbstractModule;
 import com.google.inject.Injector;
 import com.google.inject.internal.SingletonScope;
 import com.google.inject.matcher.Matchers;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import javax.inject.Provider;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.ci.ITcHelper;
 import org.apache.ignite.ci.TcHelper;
@@ -28,7 +32,7 @@ import org.apache.ignite.ci.db.Ignite1Init;
 import org.apache.ignite.ci.di.cache.GuavaCachedModule;
 import org.apache.ignite.ci.di.scheduler.SchedulerModule;
 import org.apache.ignite.ci.github.ignited.GitHubIgnitedModule;
-import org.apache.ignite.ci.jira.pure.JiraIntegrationModule;
+import org.apache.ignite.ci.jira.ignited.JiraIgnitedModule;
 import org.apache.ignite.ci.observer.BuildObserver;
 import org.apache.ignite.ci.observer.ObserverTask;
 import org.apache.ignite.ci.tcbot.TcBotBusinessServicesModule;
@@ -40,11 +44,6 @@ import org.apache.ignite.ci.web.TcUpdatePool;
 import org.apache.ignite.ci.web.model.hist.VisasHistoryStorage;
 import org.apache.ignite.ci.web.rest.exception.ServiceStartingException;
 
-import javax.inject.Provider;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
 /**
  *
  */
@@ -81,7 +80,7 @@ public class IgniteTcBotModule extends AbstractModule {
         bind(BackgroundUpdater.class).in(new SingletonScope());
 
         install(new TeamcityIgnitedModule());
-        install(new JiraIntegrationModule());
+        install(new JiraIgnitedModule());
         install(new GitHubIgnitedModule());
         install(new SchedulerModule());
         install(new TcBotBusinessServicesModule());
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java
index 50933aa..17b80a8 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java
@@ -16,8 +16,34 @@
  */
 package org.apache.ignite.ci.jira.ignited;
 
+import java.util.Set;
+import org.apache.ignite.ci.jira.Ticket;
+import org.jetbrains.annotations.NotNull;
+
 /**
  *
  */
 public interface IJiraIgnited {
+    @NotNull public String ticketPrefix();
+
+    @NotNull public String projectName();
+
+
+    /**
+     * @return Jira tickets.
+     */
+    public Set<Ticket> getTickets();
+
+    /**
+     * @param ticketFullName Ticket full name (e.g IGNITE-8331)
+     * @return URL which is used as link to Jira comment with specified id.
+     */
+    public String generateCommentUrl(String ticketFullName, int commentId);
+
+    /**
+     * @param id Ticket full ID (e.g IGNITE-8331)
+     * @return URL which is used as link to Jira ticket with specified name.
+     */
+    String generateTicketUrl(String id);
+
 }
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
index 47f4e43..a1bb0b1 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
@@ -16,7 +16,14 @@
  */
 package org.apache.ignite.ci.jira.ignited;
 
+import com.google.common.collect.Sets;
+import java.util.Collection;
+import java.util.Set;
+import javax.inject.Inject;
+import org.apache.ignite.ci.jira.Ticket;
 import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
+import org.jetbrains.annotations.NotNull;
 
 /**
  *
@@ -25,7 +32,60 @@ class JiraIgnited implements IJiraIgnited {
     /** Pure HTTP Jira connection. */
     private IJiraIntegration jira;
 
+    /** Jira ticket DAO. */
+    @Inject private JiraTicketDao jiraTicketDao;
+
+    /** Jira ticket Sync. */
+    @Inject private JiraTicketSync jiraTicketSync;
+
+    /** Server id. */
+    private String srvId;
+
+    /** Server id mask high. */
+    private int srvIdMaskHigh;
+
     public void init(IJiraIntegration jira) {
         this.jira = jira;
+
+        srvId = jira.getServiceId();
+
+        srvIdMaskHigh = ITeamcityIgnited.serverIdToInt(srvId);
+
+        jiraTicketDao.init();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String ticketPrefix() {
+        return jira.ticketPrefix();
+    }
+
+    /** {@inheritDoc} */
+    @NotNull @Override public String projectName() {
+        return jira.projectName();
+    }
+
+    @Override public Set<Ticket> getTickets() {
+        
jiraTicketSync.ensureActualizeJiraTickets(taskName("actualizeJiraTickets"), 
srvId);
+
+        return jiraTicketDao.getTickets(srvIdMaskHigh);
+    }
+
+    /**
+     * @param taskName Task name.
+     * @return Task name concatenated with server name.
+     */
+    @NotNull
+    private String taskName(String taskName) {
+        return ITeamcityIgnited.class.getSimpleName() + "." + taskName + "." + 
srvId;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String generateCommentUrl(String ticketFullName, int 
commentId) {
+        return jira.generateCommentUrl(ticketFullName, commentId);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String generateTicketUrl(String id) {
+        return jira.generateTicketUrl(id);
     }
 }
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnitedModule.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnitedModule.java
index ea354aa..ef237d4 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnitedModule.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnitedModule.java
@@ -25,6 +25,8 @@ import org.apache.ignite.ci.jira.pure.JiraIntegrationModule;
 public class JiraIgnitedModule extends AbstractModule {
     /** {@inheritDoc} */
     @Override protected void configure() {
+        bind(IJiraIgnitedProvider.class).to(JiraIgnitedProvider.class);
+
         install(new JiraIntegrationModule());
     }
 }
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java
index ca78d63..b69db1d 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java
@@ -26,8 +26,7 @@ import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.jira.Ticket;
 import org.apache.ignite.ci.jira.Tickets;
-import org.apache.ignite.ci.teamcity.pure.ITeamcityConn;
-import org.apache.ignite.ci.user.ICredentialsProv;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.internal.util.typedef.F;
 
 /**
@@ -45,25 +44,24 @@ public class JiraTicketSync {
 
     /**
      * @param taskName Task name.
-     * @param srvIdMaskHigh Server id mask high.
-     * @param creds Credentials.
-     * @param conn Connection.
+     * @param srvId Server ID
      */
-    public void ensureActualizeJiraTickets(String taskName, int srvIdMaskHigh, 
ICredentialsProv creds, ITeamcityConn conn) {
-        scheduler.sheduleNamed(taskName, () -> 
actualizeJiraTickets(srvIdMaskHigh, conn, creds), 15, TimeUnit.MINUTES);
+    public void ensureActualizeJiraTickets(String taskName, String srvId) {
+        scheduler.sheduleNamed(taskName, () -> actualizeJiraTickets(srvId), 
15, TimeUnit.MINUTES);
     }
 
     /**
-     * @param srvIdMaskHigh Server id mask high.
-     * @param conn Connection.
-     * @param creds Credentials.
+     * @param srvId Server internal identification.
      */
     @MonitoredTask(name = "Actualize Jira", nameExtArgsIndexes = {0})
-    protected String actualizeJiraTickets(int srvIdMaskHigh, ITeamcityConn 
conn, ICredentialsProv creds) {
-        String srvId = conn.serverId();
+    protected String actualizeJiraTickets(String srvId) {
+        int srvIdMaskHigh = ITeamcityIgnited.serverIdToInt(srvId);
         IJiraIntegration jira = jiraIntegrationProvider.server(srvId);
-        String url = 
"search?jql=project%20=%20IGNITE%20order%20by%20updated%20DESC&fields=status&maxResults=100";
-        Tickets tickets = jira.getTickets(srvId, creds, url);
+
+        String projectName = jira.projectName();
+        String baseUrl = "search?jql=project=" + projectName + 
"%20order%20by%20updated%20DESC&fields=status&maxResults=100";
+        String url = baseUrl;
+        Tickets tickets = jira.getTicketsPage(srvId, url);
         Collection<Ticket> page = tickets.issuesNotNull();
 
         if (F.isEmpty(page))
@@ -74,16 +72,16 @@ public class JiraTicketSync {
         int ticketsSaved = page.size();
 
         while (tickets.nextStart() > 0) {
-            url = 
"search?jql=project%20=%20IGNITE%20order%20by%20updated%20DESC&fields=status&maxResults=100&startAt="
 +
-                tickets.nextStart();
+            url = baseUrl + "&startAt=" + tickets.nextStart();
 
-            tickets = jira.getTickets(srvId, creds, url);
+            tickets = jira.getTicketsPage(srvId, url);
 
             page = tickets.issuesNotNull();
 
             if (F.isEmpty(page))
                 break;
 
+            //todo find not updated chunk and exit
             jiraDao.saveChunk(srvIdMaskHigh, page, jira.ticketPrefix());
 
             ticketsSaved += page.size();
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
index b068366..95ab3ca 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
@@ -19,16 +19,33 @@ package org.apache.ignite.ci.jira.pure;
 
 import java.io.IOException;
 import org.apache.ignite.ci.jira.Tickets;
-import org.apache.ignite.ci.web.model.Visa;
-import org.apache.ignite.ci.user.ICredentialsProv;
 import org.jetbrains.annotations.NotNull;
 
 /**
  * Reperesents methods to provide interaction with Jira servers.
  */
 public interface IJiraIntegration {
-    /** Message to show user when JIRA ticket was successfully commented by 
the Bot. */
-    public static String JIRA_COMMENTED = "JIRA commented.";
+
+    /** @return JIRA ticket prefix. */
+    @NotNull public String ticketPrefix();
+
+    /**
+     *
+     */
+    @NotNull public default String projectName() {
+        return ticketPrefix().replaceAll("-", "");
+    }
+
+    /**
+     * @return Internal identified service ID.
+     */
+    public void init(String srvId);
+
+    /**
+     * @return Internal identified service ID.
+     */
+    public String getServiceId();
+
 
     /**
      * @param ticket JIRA ticket full name. E.g 'IGNITE-5555'.
@@ -37,27 +54,20 @@ public interface IJiraIntegration {
      * @throws IOException If failed to comment JIRA ticket.
      * @throws IllegalStateException If can't find URL to the JIRA.
      */
-    public String sendJiraComment(String ticket, String comment) throws 
IOException;
+    public String postJiraComment(String ticket, String comment) throws 
IOException;
 
     /**
      * Produce wrapper for collection of Jira tickets for given server.
      *
      * @param srvId Server id.
-     * @param prov Prov.
-     * @param url Ticket id.
+     * @param url Tickets loading URL and parameters.
      * @return Jira tickets.
      */
-    public Tickets getTickets(@Deprecated String srvId, ICredentialsProv prov, 
String url);
+    public Tickets getTicketsPage(@Deprecated String srvId, String url);
 
     /** */
     public String jiraUrl();
 
-    /** @return JIRA ticket prefix. */
-    @NotNull public String ticketPrefix();
-
-    /** */
-    public void init(String srvId);
-
     /**
      * @param ticketFullName Ticket full name (e.g IGNITE-8331)
      * @return URL which is used as link to Jira ticket with specified name.
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
index d0866dd..e5a006e 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
@@ -23,16 +23,10 @@ import com.google.gson.Gson;
 import java.io.File;
 import java.io.IOException;
 import java.util.Properties;
-import javax.inject.Inject;
 import org.apache.ignite.ci.HelperConfig;
-import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
-import org.apache.ignite.ci.ITcHelper;
 import org.apache.ignite.ci.di.AutoProfiling;
 import org.apache.ignite.ci.jira.Tickets;
-import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
-import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.util.HttpUtil;
-import org.apache.ignite.ci.web.model.Visa;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -57,9 +51,11 @@ class Jira implements IJiraIntegration {
 
     /** URL for JIRA integration. */
     private String jiraApiUrl;
+    private String srvId;
 
     /** {@inheritDoc} */
     @Override public void init(String srvId) {
+        this.srvId = srvId;
         final File workDir = HelperConfig.resolveWorkDir();
 
         final String cfgName = HelperConfig.prepareConfigName(srvId);
@@ -90,12 +86,7 @@ class Jira implements IJiraIntegration {
     }
 
     /** {@inheritDoc} */
-    @Override public Tickets getTickets(String srvId, ICredentialsProv prov, 
String url) {
-        return getJiraTickets(srvId, prov, url);
-    }
-
-    /** {@inheritDoc} */
-    public Tickets getJiraTickets(String srvId, ICredentialsProv prov, String 
url) {
+    @Override public Tickets getTicketsPage(String srvId, String url) {
         try {
             return new Gson().fromJson(sendGetToJira(url), Tickets.class);
         }
@@ -136,7 +127,7 @@ class Jira implements IJiraIntegration {
 
     /** {@inheritDoc} */
     @AutoProfiling
-    @Override public String sendJiraComment(String ticket, String comment) 
throws IOException {
+    @Override public String postJiraComment(String ticket, String comment) 
throws IOException {
         if (isNullOrEmpty(jiraApiUrl))
             throw new IllegalStateException("JIRA API URL is not configured 
for this server.");
 
@@ -156,4 +147,7 @@ class Jira implements IJiraIntegration {
         return HttpUtil.sendGetToJira(jiraBasicAuthTok, jiraApiUrl + url);
     }
 
+    public String getServiceId() {
+        return srvId;
+    }
 }
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
index a36944b..ea4461f 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
@@ -23,12 +23,14 @@ import com.google.inject.Provider;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
+import java.util.SortedSet;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import javax.annotation.Nonnull;
@@ -37,13 +39,15 @@ import javax.ws.rs.QueryParam;
 import org.apache.ignite.ci.HelperConfig;
 import org.apache.ignite.ci.ITcHelper;
 import org.apache.ignite.ci.ITeamcity;
-import org.apache.ignite.ci.TcHelper;
 import org.apache.ignite.ci.github.GitHubBranch;
 import org.apache.ignite.ci.github.GitHubUser;
 import org.apache.ignite.ci.github.PullRequest;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
+import org.apache.ignite.ci.jira.Ticket;
 import org.apache.ignite.ci.jira.Tickets;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnited;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnitedProvider;
 import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.observer.BuildObserver;
@@ -82,7 +86,9 @@ import static org.apache.ignite.ci.util.XmlUtil.xmlEscapeText;
 import static 
org.apache.ignite.ci.web.rest.parms.FullQueryParams.DEFAULT_TRACKED_BRANCH_NAME;
 
 /**
- * Provides method for TC Bot Visa obtaining
+ * Provides method for TC Bot Visa obtaining.
+ * Contains features for adding comment to the ticket based on latest state.
+ *
  */
 public class TcBotTriggerAndSignOffService {
     /** Logger. */
@@ -104,8 +110,11 @@ public class TcBotTriggerAndSignOffService {
     /** TC ignited provider. */
     @Inject ITeamcityIgnitedProvider tcIgnitedProv;
 
-    /** */
-    @Inject IJiraIntegrationProvider jiraIntegrationProvider;
+    /** Direct connection to JIRA provider */
+    @Inject IJiraIgnitedProvider jiraIgnProv;
+
+    /** Direct connection to JIRA provider */
+    @Inject IJiraIntegrationProvider jiraPureProvider;
 
     /** */
     @Inject private VisasHistoryStorage visasHistStorage;
@@ -135,7 +144,7 @@ public class TcBotTriggerAndSignOffService {
 
         ITeamcityIgnited ignited = tcIgnitedProv.server(srvId, prov);
 
-        IJiraIntegration jiraIntegration = 
jiraIntegrationProvider.server(srvId);
+        IJiraIntegration jiraIntegration = jiraPureProvider.server(srvId);
 
         for (VisaRequest visaRequest : visasHistStorage.getVisas()) {
             VisaStatus visaStatus = new VisaStatus();
@@ -191,12 +200,46 @@ public class TcBotTriggerAndSignOffService {
     public Set<MuteInfo> getMutes(String srvId, String projectId, 
ICredentialsProv creds) {
         ITeamcityIgnited ignited = tcIgnitedProv.server(srvId, creds);
 
-        Set<MuteInfo> infos = ignited.getMutes(projectId, creds);
+        Set<MuteInfo> mutes = ignited.getMutes(projectId, creds);
+
+        IJiraIgnited jiraIgn = jiraIgnProv.server(srvId);
+
+        insertTicketStatus(mutes, jiraIgn.getTickets());
 
-        for (MuteInfo info : infos)
+        for (MuteInfo info : mutes)
             info.assignment.muteDate = THREAD_FORMATTER.get().format(new 
Date(info.assignment.timestamp()));
 
-        return infos;
+        return mutes;
+    }
+
+    /**
+     * Insert ticket status for all mutes, if they have ticket in description.
+     *
+     * @param mutes Mutes.
+     * @param tickets Tickets.
+     */
+    private void insertTicketStatus(Set<MuteInfo> mutes, Collection<Ticket> 
tickets) {
+        for (MuteInfo mute : mutes) {
+            if (F.isEmpty(mute.assignment.text))
+                continue;
+
+            String browseUrl = "https://issues.apache.org/jira/browse/";;
+            int pos = mute.assignment.text.indexOf(browseUrl);
+
+            if (pos == -1)
+                continue;
+
+            for (Ticket ticket : tickets) {
+                String muteTicket = mute.assignment.text.substring(pos +
+                    browseUrl.length());
+
+                if (ticket.key.equals(muteTicket)) {
+                    mute.ticketStatus = ticket.status();
+
+                    break;
+                }
+            }
+        }
     }
 
     /**
@@ -261,7 +304,7 @@ public class TcBotTriggerAndSignOffService {
         String parentSuiteId,
         Build... builds
     ) {
-        IJiraIntegration jiraIntegration = 
jiraIntegrationProvider.server(srvId);
+        IJiraIntegration jiraIntegration = jiraPureProvider.server(srvId);
 
         String prefix = jiraIntegration.ticketPrefix();
 
@@ -315,7 +358,7 @@ public class TcBotTriggerAndSignOffService {
         ICredentialsProv prov) {
         String jiraRes = "";
 
-        IJiraIntegration jiraIntegration = 
jiraIntegrationProvider.server(srvId);
+        IJiraIntegration jiraIntegration = jiraPureProvider.server(srvId);
 
         String prefix = jiraIntegration.ticketPrefix();
 
@@ -369,7 +412,7 @@ public class TcBotTriggerAndSignOffService {
      */
     public List<ContributionToCheck> getContributionsToCheck(String srvId,
         ICredentialsProv credsProv) {
-        IJiraIntegration jiraIntegration = 
jiraIntegrationProvider.server(srvId);
+        IJiraIgnited jiraIntegration = jiraIgnProv.server(srvId);
 
         List<PullRequest> requests = 
gitHubConnIgnitedProvider.server(srvId).getPullRequests();
         if (requests == null)
@@ -377,12 +420,9 @@ public class TcBotTriggerAndSignOffService {
 
         ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvId, credsProv);
 
-        String prj = jiraIntegration.ticketPrefix().replaceAll("-", "");
-        String url = "search?jql=project=" +
-            prj +
-            "%20order%20by%20updated%20DESC&fields=status&maxResults=100";
-        Tickets tickets = jiraIntegration.getTickets(srvId, credsProv, url);
-        System.out.println("srvId="+srvId + " tickets " + tickets.issues);
+        String prj = jiraIntegration.projectName();
+        Set<Ticket> tickets = jiraIntegration.getTickets();
+        System.out.println("srvId=" + srvId + " tickets " + tickets);
 
         //todo JIRA ignited
 
@@ -621,7 +661,7 @@ public class TcBotTriggerAndSignOffService {
     ) {
         ITeamcityIgnited tcIgnited = tcIgnitedProv.server(srvId, prov);
 
-        IJiraIntegration jira = jiraIntegrationProvider.server(srvId);
+        IJiraIntegration jira = jiraPureProvider.server(srvId);
 
         List<Integer> builds = 
tcIgnited.getLastNBuildsFromHistory(buildTypeId, branchForTc, 1);
 
@@ -656,7 +696,7 @@ public class TcBotTriggerAndSignOffService {
                 })
                 .sum();
 
-            res = objMapper.readValue(jira.sendJiraComment(ticket, comment), 
JiraCommentResponse.class);
+            res = objMapper.readValue(jira.postJiraComment(ticket, comment), 
JiraCommentResponse.class);
         }
         catch (Exception e) {
             String errMsg = "Exception happened during commenting JIRA ticket 
" +
@@ -667,7 +707,7 @@ public class TcBotTriggerAndSignOffService {
             return new Visa("JIRA wasn't commented - " + errMsg);
         }
 
-        return new Visa(IJiraIntegration.JIRA_COMMENTED, res, blockers);
+        return new Visa(Visa.JIRA_COMMENTED, res, blockers);
     }
 
 
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
index 65930eb..f857aae 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
@@ -114,12 +114,6 @@ public class TeamcityIgnitedImpl implements 
ITeamcityIgnited {
     /** Mute Sync. */
     @Inject private MuteSync muteSync;
 
-    /** Jira ticket DAO. */
-    @Inject private JiraTicketDao jiraTicketDao;
-
-    /** Jira ticket Sync. */
-    @Inject private JiraTicketSync jiraTicketSync;
-
     /** Changes DAO. */
     @Inject private ChangeDao changesDao;
 
@@ -158,7 +152,6 @@ public class TeamcityIgnitedImpl implements 
ITeamcityIgnited {
         changesDao.init();
         runHistCompactedDao.init();
         muteDao.init();
-        jiraTicketDao.init();
     }
 
     /**
@@ -344,44 +337,14 @@ public class TeamcityIgnitedImpl implements 
ITeamcityIgnited {
     /** {@inheritDoc} */
     @Override public Set<MuteInfo> getMutes(String projectId, ICredentialsProv 
creds) {
         muteSync.ensureActualizeMutes(taskName("actualizeMutes"), projectId, 
srvIdMaskHigh, conn);
-        
jiraTicketSync.ensureActualizeJiraTickets(taskName("actualizeJiraTickets"), 
srvIdMaskHigh, creds, conn);
 
         SortedSet<MuteInfo> mutes = muteDao.getMutes(srvIdMaskHigh);
-        Collection<Ticket> tickets = jiraTicketDao.getTickets(srvIdMaskHigh);
 
-        insertTicketStatus(mutes, tickets);
 
         return mutes;
     }
 
-    /**
-     * Insert ticket status for all mutes, if they have ticket in description.
-     *
-     * @param mutes Mutes.
-     * @param tickets Tickets.
-     */
-    private void insertTicketStatus(SortedSet<MuteInfo> mutes, 
Collection<Ticket> tickets) {
-        for (MuteInfo mute : mutes) {
-            if (F.isEmpty(mute.assignment.text))
-                continue;
-
-            int pos = 
mute.assignment.text.indexOf("https://issues.apache.org/jira/browse/";);
-
-            if (pos == -1)
-                continue;
 
-            for (Ticket ticket : tickets) {
-                String muteTicket = mute.assignment.text.substring(pos +
-                    "https://issues.apache.org/jira/browse/".length());
-
-                if (ticket.key.equals(muteTicket)) {
-                    mute.ticketStatus = ticket.status();
-
-                    break;
-                }
-            }
-        }
-    }
 
     /** {@inheritDoc} */
     @AutoProfiling
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Visa.java 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Visa.java
index 2175d2a..201db9b 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Visa.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Visa.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.ci.web.model;
 
-import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -29,6 +28,9 @@ public class Visa {
     /** Determines Visa with no results and info. */
     public static final String EMPTY_VISA_STATUS = "emptyVisa";
 
+    /** Message to show user when JIRA ticket was successfully commented by 
the Bot. */
+    public static final String JIRA_COMMENTED = "JIRA commented.";
+
     /** */
     public final String status;
 
@@ -71,7 +73,7 @@ public class Visa {
 
     /** */
     public boolean isSuccess() {
-        return IJiraIntegration.JIRA_COMMENTED.equals(status)
+        return JIRA_COMMENTED.equals(status)
             && jiraCommentRes != null;
     }
 

Reply via email to