Migrate this plugin to use maniphest.edit conduit maniphest.update is deprecated and can be removed at anytime. Our downstream task https://phabricator.wikimedia.org/T159041 Change-Id: I843f521e8fe601d5c7b8fb654feec3e98f4c5a51
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorItsFacade.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorItsFacade.java index 7d4a3c8..5d171de 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorItsFacade.java +++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorItsFacade.java
@@ -61,7 +61,7 @@ throws IOException { int task_id = Integer.parseInt(bugId); try { - conduit.maniphestUpdate(task_id, comment); + conduit.maniphestEdit(task_id, comment); } catch (ConduitException e) { throw new IOException("Could not update message for task " + task_id, e); } @@ -122,7 +122,7 @@ projectPhids.add(jsonElement.getAsString()); } - conduit.maniphestUpdate(taskId, projectPhids); + conduit.maniphestEdit(taskId, projectPhids); } catch (ConduitException e) { throw new IOException("Error on conduit", e); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/Conduit.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/Conduit.java index fa49281..d2d4ae2 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/Conduit.java +++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/Conduit.java
@@ -21,7 +21,7 @@ import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ConduitConnect; import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ConduitPing; import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ManiphestInfo; -import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ManiphestUpdate; +import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ManiphestEdit; import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ProjectInfo; import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.QueryResult; @@ -31,14 +31,15 @@ import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.xml.bind.DatatypeConverter; - /** * Bindings for Phabricator's Conduit API * <p/> @@ -174,35 +175,47 @@ } /** - * Runs the API's 'maniphest.update' method + * Runs the API's 'maniphest.edit' method */ - public ManiphestUpdate maniphestUpdate(int taskId, String comment) throws ConduitException { - return maniphestUpdate(taskId, comment, null); + public ManiphestEdit maniphestEdit(int taskId, String comment) throws ConduitException { + return maniphestEdit(taskId, comment, null); } /** - * Runs the API's 'maniphest.update' method + * Runs the API's 'maniphest.edit' method */ - public ManiphestUpdate maniphestUpdate(int taskId, Iterable<String> projects) throws ConduitException { - return maniphestUpdate(taskId, null, projects); + public ManiphestEdit maniphestEdit(int taskId, Iterable<String> projects) throws ConduitException { + return maniphestEdit(taskId, null, projects); } /** - * Runs the API's 'maniphest.update' method + * Runs the API's 'maniphest.edit' method */ - public ManiphestUpdate maniphestUpdate(int taskId, String comment, Iterable<String> projects) throws ConduitException { - Map<String, Object> params = new HashMap<>(); + public ManiphestEdit maniphestEdit(int taskId, String comment, Iterable<String> projects) throws ConduitException { + HashMap<String, Object> params = new HashMap<>(); fillInSession(params); - params.put("id", taskId); + List<Object> list = new ArrayList<>(); + HashMap<String, Object> params2 = new HashMap<>(); if (comment != null) { - params.put("comments", comment); - } - if (projects != null) { - params.put("projectPHIDs", projects); + String comments = "comment"; + params2.put("type", comments); + params2.put("value", comment); } - JsonElement callResult = conduitConnection.call("maniphest.update", params); - ManiphestUpdate result = gson.fromJson(callResult, ManiphestUpdate.class); + if (projects != null) { + String project = "projects.add"; + params2.put("type", project); + params2.put("value", projects); + } + + if (!params2.isEmpty()) { + list.add(params2); + params.put("transactions", list); + } + params.put("objectIdentifier", taskId); + + JsonElement callResult = conduitConnection.call("maniphest.edit", params); + ManiphestEdit result = gson.fromJson(callResult, ManiphestEdit.class); return result; }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ManiphestUpdate.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ManiphestEdit.java similarity index 93% rename from src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ManiphestUpdate.java rename to src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ManiphestEdit.java index 055e8db..8323f4e 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ManiphestUpdate.java +++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ManiphestEdit.java
@@ -14,7 +14,7 @@ package com.googlesource.gerrit.plugins.its.phabricator.conduit.results; /** - * Models the result for a call to maniphest.update + * Models the result for a call to maniphest.edit * <p/> * JSON looks like: * <pre> @@ -46,6 +46,6 @@ * } * </pre> */ -public class ManiphestUpdate extends Task { +public class ManiphestEdit extends Task { }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/Task.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/Task.java index f6e72b6..0392314 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/Task.java +++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/Task.java
@@ -68,6 +68,8 @@ private String dateCreated; private String dateModified; private JsonElement dependsOnTaskPHIDs; + private JsonElement objectIdentifier; + private JsonElement transactions; public int getId() { return id; @@ -144,4 +146,12 @@ public JsonElement getDependsOnTaskPHIDs() { return dependsOnTaskPHIDs; } + + public JsonElement getObjectIdentifier() { + return objectIdentifier; + } + + public JsonElement getTransactions() { + return transactions; + } }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/ConduitTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/ConduitTest.java index 58ea0b8..b4936e4 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/ConduitTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/ConduitTest.java
@@ -35,7 +35,7 @@ import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ConduitConnect; import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ConduitPing; import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ManiphestInfo; -import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ManiphestUpdate; +import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ManiphestEdit; import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.ProjectInfo; @RunWith(PowerMockRunner.class) @@ -245,7 +245,7 @@ assertLogMessageContains("Trying to start new session"); } - public void testManiphestUpdatePassComment() throws Exception { + public void testManiphestEditPassComment() throws Exception { mockConnection(); resetToStrict(connection); @@ -272,7 +272,7 @@ Conduit conduit = new Conduit(URL, USERNAME, CERTIFICATE); - ManiphestUpdate maniphestUpdate = conduit.maniphestUpdate(42, "foo"); + ManiphestEdit maniphestEdit = conduit.maniphestEdit(42, "foo"); Map<String, Object> paramsConnect = paramsCaptureConnect.getValue(); assertEquals("Usernames do not match", USERNAME, paramsConnect.get("user")); @@ -280,12 +280,12 @@ Map<String, Object> paramsRelevant = paramsCaptureRelevant.getValue(); assertEquals("Task id is not set", 42, paramsRelevant.get("id")); - assertEquals("ManiphestInfo's id does not match", 42, maniphestUpdate.getId()); + assertEquals("ManiphestInfo's id does not match", 42, maniphestEdit.getId()); assertLogMessageContains("Trying to start new session"); } - public void testManiphestUpdatePassProjects() throws Exception { + public void testManiphestEditPassProjects() throws Exception { mockConnection(); resetToStrict(connection); @@ -304,7 +304,7 @@ Capture<Map<String, Object>> paramsCaptureRelevant = new Capture<>(); - expect(connection.call(eq("maniphest.update"), capture(paramsCaptureRelevant))) + expect(connection.call(eq("maniphest.edit"), capture(paramsCaptureRelevant))) .andReturn(retRelevant) .once(); @@ -312,7 +312,7 @@ Conduit conduit = new Conduit(URL, USERNAME, CERTIFICATE); - ManiphestUpdate maniphestUpdate = conduit.maniphestUpdate(42, + ManiphestEdit maniphestEdit = conduit.maniphestEdit(42, Arrays.asList("foo", "bar")); Map<String, Object> paramsConnect = paramsCaptureConnect.getValue(); @@ -323,12 +323,12 @@ assertEquals("Task projects are not set", Arrays.asList("foo", "bar"), paramsRelevant.get("projectPHIDs")); - assertEquals("ManiphestUpdate's id does not match", 42, maniphestUpdate.getId()); + assertEquals("ManiphestEdit's id does not match", 42, maniphestEdit.getId()); assertLogMessageContains("Trying to start new session"); } - public void testManiphestUpdatePassCommentAndProjects() throws Exception { + public void testManiphestEditPassCommentAndProjects() throws Exception { mockConnection(); resetToStrict(connection); @@ -347,7 +347,7 @@ Capture<Map<String, Object>> paramsCaptureRelevant = new Capture<>(); - expect(connection.call(eq("maniphest.update"), capture(paramsCaptureRelevant))) + expect(connection.call(eq("maniphest.edit"), capture(paramsCaptureRelevant))) .andReturn(retRelevant) .once(); @@ -355,7 +355,7 @@ Conduit conduit = new Conduit(URL, USERNAME, CERTIFICATE); - ManiphestUpdate maniphestUpdate = conduit.maniphestUpdate(42, "baz", + ManiphestEdit maniphestEdit = conduit.maniphestEdit(42, "baz", Arrays.asList("foo", "bar")); Map<String, Object> paramsConnect = paramsCaptureConnect.getValue(); @@ -367,13 +367,13 @@ assertEquals("Task projects are not set", Arrays.asList("foo", "bar"), paramsRelevant.get("projectPHIDs")); - assertEquals("ManiphestUpdate's id does not match", 42, maniphestUpdate.getId()); + assertEquals("ManiphestUpdate's id does not match", 42, maniphestEdit.getId()); assertLogMessageContains("Trying to start new session"); } - public void testManiphestUpdateFailConnect() throws Exception { + public void testManiphestEditFailConnect() throws Exception { mockConnection(); ConduitException conduitException = new ConduitException(); @@ -389,7 +389,7 @@ Conduit conduit = new Conduit(URL, USERNAME, CERTIFICATE); try { - conduit.maniphestUpdate(42, "foo"); + conduit.maniphestEdit(42, "foo"); fail("no exception got thrown"); } catch (ConduitException e) { assertSame(conduitException, e); @@ -401,7 +401,7 @@ assertLogMessageContains("Trying to start new session"); } - public void testManiphestUpdateFailRelevant() throws Exception { + public void testManiphestEditFailRelevant() throws Exception { mockConnection(); resetToStrict(connection); @@ -419,7 +419,7 @@ Capture<Map<String, Object>> paramsCaptureRelevant = new Capture<>(); - expect(connection.call(eq("maniphest.update"), capture(paramsCaptureRelevant))) + expect(connection.call(eq("maniphest.edit"), capture(paramsCaptureRelevant))) .andThrow(conduitException) .once(); @@ -428,7 +428,7 @@ Conduit conduit = new Conduit(URL, USERNAME, CERTIFICATE); try { - conduit.maniphestUpdate(42, "foo"); + conduit.maniphestEdit(42, "foo"); fail("no exception got thrown"); } catch (ConduitException e) { assertSame(conduitException, e);