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);