Merge branch 'stable-3.0' into stable-3.1

* stable-3.0:
  Remove Hugo Arès from developers section in pom.xml files
  ElasticContainer: Upgrade V6_8 to elasticsearch 6.8.10
  Upgrade elasticsearch-rest-client to 7.7.1
  ElasticContainer: Upgrade V7_7 to elasticsearch 7.7.1
  Support /COMMIT_MSG for change edit REST endpoints

Change-Id: I911d0d687a74a629d5a5955420e040088204bbd9
This commit is contained in:
Marco Miller
2020-06-05 09:24:44 -04:00
8 changed files with 43 additions and 22 deletions

View File

@@ -14,9 +14,13 @@
package com.google.gerrit.server.restapi.change; package com.google.gerrit.server.restapi.change;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.io.ByteStreams;
import com.google.gerrit.entities.Change; import com.google.gerrit.entities.Change;
import com.google.gerrit.entities.Patch;
import com.google.gerrit.entities.PatchSet; import com.google.gerrit.entities.PatchSet;
import com.google.gerrit.entities.Project; import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.common.DiffWebLinkInfo; import com.google.gerrit.extensions.common.DiffWebLinkInfo;
@@ -119,7 +123,7 @@ public class ChangeEdits implements ChildCollection<ChangeResource, ChangeEditRe
@Override @Override
public Response<?> apply(ChangeResource resource, IdString id, Put.Input input) public Response<?> apply(ChangeResource resource, IdString id, Put.Input input)
throws AuthException, ResourceConflictException, BadRequestException, IOException, throws AuthException, ResourceConflictException, BadRequestException, IOException,
PermissionBackendException { PermissionBackendException, BadRequestException {
putEdit.apply(resource, id.get(), input.content); putEdit.apply(resource, id.get(), input.content);
return Response.none(); return Response.none();
} }
@@ -275,23 +279,34 @@ public class ChangeEdits implements ChildCollection<ChangeResource, ChangeEditRe
private final ChangeEditModifier editModifier; private final ChangeEditModifier editModifier;
private final GitRepositoryManager repositoryManager; private final GitRepositoryManager repositoryManager;
private final EditMessage editMessage;
@Inject @Inject
Put(ChangeEditModifier editModifier, GitRepositoryManager repositoryManager) { Put(
ChangeEditModifier editModifier,
GitRepositoryManager repositoryManager,
EditMessage editMessage) {
this.editModifier = editModifier; this.editModifier = editModifier;
this.repositoryManager = repositoryManager; this.repositoryManager = repositoryManager;
this.editMessage = editMessage;
} }
@Override @Override
public Response<?> apply(ChangeEditResource rsrc, Input input) public Response<?> apply(ChangeEditResource rsrc, Input input)
throws AuthException, ResourceConflictException, BadRequestException, IOException, throws AuthException, ResourceConflictException, BadRequestException, IOException,
PermissionBackendException { PermissionBackendException, BadRequestException {
return apply(rsrc.getChangeResource(), rsrc.getPath(), input.content); return apply(rsrc.getChangeResource(), rsrc.getPath(), input.content);
} }
public Response<?> apply(ChangeResource rsrc, String path, RawInput newContent) public Response<?> apply(ChangeResource rsrc, String path, RawInput newContent)
throws ResourceConflictException, AuthException, BadRequestException, IOException, throws ResourceConflictException, AuthException, BadRequestException, IOException,
PermissionBackendException { PermissionBackendException, BadRequestException {
if (Patch.COMMIT_MSG.equals(path)) {
EditMessage.Input editCommitMessageInput = new EditMessage.Input();
editCommitMessageInput.message =
new String(ByteStreams.toByteArray(newContent.getInputStream()), UTF_8);
return Response.ok(editMessage.apply(rsrc, editCommitMessageInput));
}
if (Strings.isNullOrEmpty(path) || path.charAt(0) == '/') { if (Strings.isNullOrEmpty(path) || path.charAt(0) == '/') {
throw new ResourceConflictException("Invalid path: " + path); throw new ResourceConflictException("Invalid path: " + path);
} }
@@ -345,6 +360,7 @@ public class ChangeEdits implements ChildCollection<ChangeResource, ChangeEditRe
public static class Get implements RestReadView<ChangeEditResource> { public static class Get implements RestReadView<ChangeEditResource> {
private final FileContentUtil fileContentUtil; private final FileContentUtil fileContentUtil;
private final ProjectCache projectCache; private final ProjectCache projectCache;
private final GetMessage getMessage;
@Option( @Option(
name = "--base", name = "--base",
@@ -353,14 +369,19 @@ public class ChangeEdits implements ChildCollection<ChangeResource, ChangeEditRe
private boolean base; private boolean base;
@Inject @Inject
Get(FileContentUtil fileContentUtil, ProjectCache projectCache) { Get(FileContentUtil fileContentUtil, ProjectCache projectCache, GetMessage getMessage) {
this.fileContentUtil = fileContentUtil; this.fileContentUtil = fileContentUtil;
this.projectCache = projectCache; this.projectCache = projectCache;
this.getMessage = getMessage;
} }
@Override @Override
public Response<BinaryResult> apply(ChangeEditResource rsrc) throws IOException { public Response<BinaryResult> apply(ChangeEditResource rsrc) throws AuthException, IOException {
try { try {
if (Patch.COMMIT_MSG.equals(rsrc.getPath())) {
return getMessage.apply(rsrc.getChangeResource());
}
ChangeEdit edit = rsrc.getChangeEdit(); ChangeEdit edit = rsrc.getChangeEdit();
return Response.ok( return Response.ok(
fileContentUtil.getContent( fileContentUtil.getContent(

View File

@@ -42,6 +42,7 @@ import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
import com.google.gerrit.common.RawInputUtil; import com.google.gerrit.common.RawInputUtil;
import com.google.gerrit.common.data.LabelType; import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
import com.google.gerrit.entities.Patch;
import com.google.gerrit.entities.PatchSet; import com.google.gerrit.entities.PatchSet;
import com.google.gerrit.entities.Project; import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.api.changes.AddReviewerInput; import com.google.gerrit.extensions.api.changes.AddReviewerInput;
@@ -296,6 +297,17 @@ public class ChangeEditIT extends AbstractDaemonTest {
ensureSameBytes(getFileContentOfEdit(changeId, FILE_NAME), CONTENT_NEW); ensureSameBytes(getFileContentOfEdit(changeId, FILE_NAME), CONTENT_NEW);
} }
@Test
public void updateCommitMessageByEditingMagicCommitMsgFile() throws Exception {
createEmptyEditFor(changeId);
gApi.changes()
.id(changeId)
.edit()
.modifyFile(Patch.COMMIT_MSG, RawInputUtil.create("Foo Bar".getBytes(UTF_8)));
assertThat(getEdit(changeId)).isPresent();
ensureSameBytes(getFileContentOfEdit(changeId, Patch.COMMIT_MSG), "Foo Bar\n".getBytes(UTF_8));
}
@Test @Test
@TestProjectInput(createEmptyCommit = false) @TestProjectInput(createEmptyCommit = false)
public void updateRootCommitMessage() throws Exception { public void updateRootCommitMessage() throws Exception {

View File

@@ -43,7 +43,7 @@ public class ElasticContainer extends ElasticsearchContainer {
case V6_7: case V6_7:
return "blacktop/elasticsearch:6.7.2"; return "blacktop/elasticsearch:6.7.2";
case V6_8: case V6_8:
return "blacktop/elasticsearch:6.8.9"; return "blacktop/elasticsearch:6.8.10";
case V7_0: case V7_0:
return "blacktop/elasticsearch:7.0.1"; return "blacktop/elasticsearch:7.0.1";
case V7_1: case V7_1:
@@ -59,7 +59,7 @@ public class ElasticContainer extends ElasticsearchContainer {
case V7_6: case V7_6:
return "blacktop/elasticsearch:7.6.2"; return "blacktop/elasticsearch:7.6.2";
case V7_7: case V7_7:
return "blacktop/elasticsearch:7.7.0"; return "blacktop/elasticsearch:7.7.1";
} }
throw new IllegalStateException("No tests for version: " + version.name()); throw new IllegalStateException("No tests for version: " + version.name());
} }

View File

@@ -43,9 +43,6 @@
<developer> <developer>
<name>Han-Wen Nienhuys</name> <name>Han-Wen Nienhuys</name>
</developer> </developer>
<developer>
<name>Hugo Arès</name>
</developer>
<developer> <developer>
<name>Luca Milanesio</name> <name>Luca Milanesio</name>
</developer> </developer>

View File

@@ -43,9 +43,6 @@
<developer> <developer>
<name>Han-Wen Nienhuys</name> <name>Han-Wen Nienhuys</name>
</developer> </developer>
<developer>
<name>Hugo Arès</name>
</developer>
<developer> <developer>
<name>Luca Milanesio</name> <name>Luca Milanesio</name>
</developer> </developer>

View File

@@ -43,9 +43,6 @@
<developer> <developer>
<name>Han-Wen Nienhuys</name> <name>Han-Wen Nienhuys</name>
</developer> </developer>
<developer>
<name>Hugo Arès</name>
</developer>
<developer> <developer>
<name>Luca Milanesio</name> <name>Luca Milanesio</name>
</developer> </developer>

View File

@@ -43,9 +43,6 @@
<developer> <developer>
<name>Han-Wen Nienhuys</name> <name>Han-Wen Nienhuys</name>
</developer> </developer>
<developer>
<name>Hugo Arès</name>
</developer>
<developer> <developer>
<name>Luca Milanesio</name> <name>Luca Milanesio</name>
</developer> </developer>

View File

@@ -102,8 +102,8 @@ def declare_nongoogle_deps():
# and httpasyncclient as necessary. # and httpasyncclient as necessary.
maven_jar( maven_jar(
name = "elasticsearch-rest-client", name = "elasticsearch-rest-client",
artifact = "org.elasticsearch.client:elasticsearch-rest-client:7.7.0", artifact = "org.elasticsearch.client:elasticsearch-rest-client:7.7.1",
sha1 = "5fc25eec3940bc0e9b0ffddcf50554a609e9db8e", sha1 = "6d44a8e35c11df6883747200bcf46f476a1782b8",
) )
maven_jar( maven_jar(