IDEA-136499 Don't include project's ID inside task's ID
authorMikhail Golubev <mikhail.golubev@jetbrains.com>
Mon, 1 Feb 2016 14:15:19 +0000 (17:15 +0300)
committerMikhail Golubev <mikhail.golubev@jetbrains.com>
Mon, 1 Feb 2016 15:39:41 +0000 (18:39 +0300)
because otherwise tasks with new ID format might be duplicated by
existing local tasks in GotoTask popup

plugins/tasks/tasks-core/src/com/intellij/tasks/gitlab/GitlabRepository.java
plugins/tasks/tasks-core/src/com/intellij/tasks/gitlab/GitlabTask.java
plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/GitlabIntegrationTest.java

index 330a14ef4c175867138939a3a63e364cef7b1053..8b850c2f76a68b014471fc64800763e552a8e924 100644 (file)
@@ -30,7 +30,6 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import static com.intellij.tasks.impl.httpclient.TaskResponseUtil.GsonMultipleObjectsDeserializer;
@@ -45,7 +44,7 @@ public class GitlabRepository extends NewBaseRepositoryImpl {
   @NonNls public static final String REST_API_PATH_PREFIX = "/api/v3/";
   @NonNls private static final String TOKEN_HEADER = "PRIVATE-TOKEN";
 
-  private static final Pattern ID_PATTERN = Pattern.compile("(\\d+):(\\d+)");
+  private static final Pattern ID_PATTERN = Pattern.compile("\\d+");
   private static final Gson GSON = TaskGsonUtil.createDefaultBuilder().create();
 
   // @formatter:off
@@ -117,12 +116,9 @@ public class GitlabRepository extends NewBaseRepositoryImpl {
   @Nullable
   @Override
   public Task findTask(@NotNull String id) throws Exception {
-    final Matcher matcher = ID_PATTERN.matcher(id);
-    if (!matcher.matches()) return null;
-    final int projectId = Integer.parseInt(matcher.group(1)), issueId = Integer.parseInt(matcher.group(2));
-    final GitlabIssue issue = fetchIssue(projectId, issueId);
-    if (issue == null) return null;
-    return new GitlabTask(this, issue);
+    // doesn't work now, because Gitlab's REST API doesn't provide endpoint to find task
+    // using only its global ID, it requires both task's global ID AND task's project ID
+    return null;
   }
 
   @Nullable
index d54e917adf1e302bbbee9c0d3722a170dda18801..a6b04356df59c24cf5c32f66b20da386fcc6c1fa 100644 (file)
@@ -38,7 +38,8 @@ public class GitlabTask extends Task {
   @Override
   public String getId() {
     // Will be in form <projectId>:<issueId>
-    return myIssue.getProjectId() + ":" + myIssue.getId();
+    //return myIssue.getProjectId() + ":" + myIssue.getId();
+    return String.valueOf(myIssue.getId());
   }
 
   @NotNull
index 15688871c18720e74d8f7e1dd9e2de069c1edfd4..a593989060f61a8042d39da40090cba666eda057 100644 (file)
@@ -84,7 +84,7 @@ public class GitlabIntegrationTest extends TaskManagerTestCase {
     assertEquals("#1", task.getPresentableId());
     assertEquals("1", task.getNumber());
     assertEquals("ID Formatting Tests", task.getProject());
-    assertEquals("5:10", task.getId());
+    assertEquals("10", task.getId());
     assertEquals("#1: First issue with iid = 1", task.toString());
     myRepository.setShouldFormatCommitMessage(true);
     assertEquals("#1 First issue with iid = 1", myRepository.getTaskComment(task));