You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2019/01/15 13:12:16 UTC

[ignite-teamcity-bot] branch ignite-10930 updated: IGNITE-10930: PR-less contributions: Removing hardcodes

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 6573750  IGNITE-10930: PR-less contributions: Removing hardcodes
6573750 is described below

commit 6573750d14b45add533e290a6e5429cb7923ecbf
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Tue Jan 15 16:12:12 2019 +0300

    IGNITE-10930: PR-less contributions: Removing hardcodes
---
 .../apache/ignite/ci/jira/ignited/JiraIgnited.java | 11 ++---------
 .../ignite/ci/jira/ignited/JiraTicketDao.java      |  4 ++--
 .../ignite/ci/jira/ignited/JiraTicketSync.java     | 22 ++++++++++++++++++----
 .../ignite/ci/jira/ignited/TicketCompacted.java    | 21 +++++++++++++++++++++
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 15 +++++++--------
 5 files changed, 50 insertions(+), 23 deletions(-)

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 5a39821..334292a 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
@@ -65,19 +65,12 @@ class JiraIgnited implements IJiraIgnited {
 
     /** {@inheritDoc} */
     @Override public Set<Ticket> getTickets() {
-        jiraTicketSync.ensureActualizeJiraTickets(taskName("actualizeJiraTickets"), srvId);
+        jiraTicketSync.ensureActualizeJiraTickets(srvId);
 
         return jiraTicketDao.getTickets(srvIdMaskHigh, ticketPrefix());
     }
 
-    /**
-     * @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) {
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java
index fb97221..6502488 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java
@@ -44,7 +44,7 @@ public class JiraTicketDao {
     /** Ignite provider. */
     @Inject private Provider<Ignite> igniteProvider;
 
-    /** Builds cache. */
+    /** JIRA tickets cache : (srvId || ticketNuber) -> Ticket data compacted. */
     private IgniteCache<Long, TicketCompacted> jiraCache;
 
     /** Compactor. */
@@ -80,7 +80,7 @@ public class JiraTicketDao {
      * Combine server and project into key for storage.
      *
      * @param srvIdMaskHigh Server id mask high.
-     * @param igniteId Ticket.
+     * @param igniteId Ticket number without project name.
      * @return Key from server-project pair.
      */
     public static long ticketToCacheKey(int srvIdMaskHigh, int igniteId) {
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 b69db1d..178ced6 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
@@ -28,6 +28,9 @@ import org.apache.ignite.ci.jira.Ticket;
 import org.apache.ignite.ci.jira.Tickets;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.internal.util.typedef.F;
+import org.jetbrains.annotations.NotNull;
+
+import static org.apache.ignite.ci.util.UrlUtil.escape;
 
 /**
  * Sync serving requests for all JIRA servers.
@@ -43,14 +46,23 @@ public class JiraTicketSync {
     @Inject IJiraIntegrationProvider jiraIntegrationProvider;
 
     /**
-     * @param taskName Task name.
      * @param srvId Server ID
      */
-    public void ensureActualizeJiraTickets(String taskName, String srvId) {
-        scheduler.sheduleNamed(taskName, () -> actualizeJiraTickets(srvId), 15, TimeUnit.MINUTES);
+    public void ensureActualizeJiraTickets(String srvId) {
+        scheduler.sheduleNamed(taskName("actualizeJiraTickets", srvId),
+            () -> actualizeJiraTickets(srvId), 15, TimeUnit.MINUTES);
     }
 
     /**
+     * @param taskName Task name.
+     * @param srvId Service ID
+     * @return Task name concatenated with server name.
+     */
+    @NotNull
+    private String taskName(String taskName, String srvId) {
+        return JiraTicketSync.class.getSimpleName() + "." + taskName + "." + srvId;
+    }
+    /**
      * @param srvId Server internal identification.
      */
     @MonitoredTask(name = "Actualize Jira", nameExtArgsIndexes = {0})
@@ -59,7 +71,9 @@ public class JiraTicketSync {
         IJiraIntegration jira = jiraIntegrationProvider.server(srvId);
 
         String projectName = jira.projectName();
-        String baseUrl = "search?jql=project=" + projectName + "%20order%20by%20updated%20DESC&fields=status&maxResults=100";
+        String baseUrl = "search?jql=" + escape("project=" + projectName + " order by updated DESC")
+            + "&fields=status&maxResults=100";
+
         String url = baseUrl;
         Tickets tickets = jira.getTicketsPage(srvId, url);
         Collection<Ticket> page = tickets.issuesNotNull();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java
index 5876641..d1a22f9 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.ci.jira.ignited;
 
+import com.google.common.base.Objects;
 import org.apache.ignite.ci.jira.Fields;
 import org.apache.ignite.ci.jira.Status;
 import org.apache.ignite.ci.jira.Ticket;
@@ -60,4 +61,24 @@ public class TicketCompacted {
 
         return ticket;
     }
+
+    /** {@inheritDoc} */
+    @Override public boolean equals(Object o) {
+        if (this == o)
+            return true;
+
+        if (o == null || getClass() != o.getClass())
+            return false;
+
+        TicketCompacted compacted = (TicketCompacted)o;
+
+        return id == compacted.id &&
+            igniteId == compacted.igniteId &&
+            status == compacted.status;
+    }
+
+    /** {@inheritDoc} */
+    @Override public int hashCode() {
+        return Objects.hashCode(id, igniteId, status);
+    }
 }
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 d7e919f..e4bd777 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
@@ -202,7 +202,9 @@ public class TcBotTriggerAndSignOffService {
 
         IJiraIgnited jiraIgn = jiraIgnProv.server(srvId);
 
-        insertTicketStatus(mutes, jiraIgn.getTickets());
+        String browseUrl = jiraIgn.generateTicketUrl("");
+
+        insertTicketStatus(mutes, jiraIgn.getTickets(), browseUrl);
 
         for (MuteInfo info : mutes)
             info.assignment.muteDate = THREAD_FORMATTER.get().format(new Date(info.assignment.timestamp()));
@@ -212,24 +214,22 @@ public class TcBotTriggerAndSignOffService {
 
     /**
      * Insert ticket status for all mutes, if they have ticket in description.
-     *
-     * @param mutes Mutes.
+     *  @param mutes Mutes.
      * @param tickets Tickets.
+     * @param browseUrl JIRA URL for browsing tickets, e.g. https://issues.apache.org/jira/browse/
      */
-    private void insertTicketStatus(Set<MuteInfo> mutes, Collection<Ticket> tickets) {
+    private void insertTicketStatus(Set<MuteInfo> mutes, Collection<Ticket> tickets, String browseUrl) {
         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());
+                String muteTicket = mute.assignment.text.substring(pos + browseUrl.length());
 
                 if (ticket.key.equals(muteTicket)) {
                     mute.ticketStatus = ticket.status();
@@ -418,7 +418,6 @@ public class TcBotTriggerAndSignOffService {
 
         ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvId, credsProv);
 
-        String prj = jiraIntegration.projectName();
         Set<Ticket> tickets = jiraIntegration.getTickets();
 
         List<Ticket> paTickets = tickets.stream().filter(Ticket::isActiveContribution).collect(Collectors.toList());