Merge branch 'stable-2.13'
* stable-2.13:
Doc: Use correct request type for resume
Disable hash tags when NoteDb is disabled
ReplayChange: Cleanup redundant else clauses
Do not fail because of invalid SSH key
Change-Id: I344df8b01e96842e9654e1649696aaa0046b939a
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/AccountUtil.java b/src/main/java/com/googlesource/gerrit/plugins/importer/AccountUtil.java
index 4aee998..07e5d8f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/AccountUtil.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/AccountUtil.java
@@ -77,7 +77,7 @@
Account.Id resolveUser(GerritApi api, AccountInfo acc)
throws NoSuchAccountException, IOException, OrmException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
if (acc.username == null) {
throw new NoSuchAccountException(String.format(
"User %s <%s> (%s) doesn't have a username and cannot be looked up.",
@@ -112,7 +112,7 @@
private Account.Id createAccountByLdapAndAddSshKeys(GerritApi api,
AccountInfo acc) throws NoSuchAccountException, IOException, OrmException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
if (!acc.username.matches(Account.USER_NAME_PATTERN)) {
throw new NoSuchAccountException(String.format("User %s not found",
acc.username));
@@ -131,11 +131,15 @@
private void addSshKeys(GerritApi api, AccountInfo acc)
throws BadRequestException, IOException, OrmException,
- ConfigInvalidException, InvalidSshKeyException {
+ ConfigInvalidException {
List<SshKeyInfo> sshKeys = api.getSshKeys(acc.username);
AccountState a = accountCache.getByUsername(acc.username);
for (SshKeyInfo sshKeyInfo : sshKeys) {
- authorizedKeys.addKey(a.getAccount().getId(), sshKeyInfo.sshPublicKey);
+ try {
+ authorizedKeys.addKey(a.getAccount().getId(), sshKeyInfo.sshPublicKey);
+ } catch (InvalidSshKeyException e) {
+ log.warn(String.format("Invalid SSH key for user %s", acc.username));
+ }
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/AddApprovalsStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/AddApprovalsStep.java
index 05c869b..b541966 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/AddApprovalsStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/AddApprovalsStep.java
@@ -17,7 +17,6 @@
import com.google.common.base.MoreObjects;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.common.data.LabelType;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -84,7 +83,7 @@
void add(GerritApi api) throws OrmException, NoSuchChangeException,
IOException, NoSuchAccountException, RestApiException,
- ConfigInvalidException, InvalidSshKeyException {
+ ConfigInvalidException {
if (resume) {
db.patchSetApprovals().delete(
db.patchSetApprovals().byChange(change.getId()));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/CopyProject.java b/src/main/java/com/googlesource/gerrit/plugins/importer/CopyProject.java
index 87456a2..0992551 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/CopyProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/CopyProject.java
@@ -15,7 +15,6 @@
package com.googlesource.gerrit.plugins.importer;
import com.google.common.base.Strings;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.annotations.RequiresCapability;
@@ -73,7 +72,7 @@
public ImportStatistic apply(ProjectResource rsrc, Input input)
throws RestApiException, OrmException, IOException, ValidationException,
GitAPIException, NoSuchChangeException, NoSuchAccountException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
if (Strings.isNullOrEmpty(input.name)) {
throw new BadRequestException("name is required");
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/GroupCommand.java b/src/main/java/com/googlesource/gerrit/plugins/importer/GroupCommand.java
index ffe1d57..5b4c758 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/GroupCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/GroupCommand.java
@@ -17,7 +17,6 @@
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Strings;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.annotations.RequiresCapability;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -68,7 +67,7 @@
@Override
protected void run() throws UnloggedFailure, OrmException, IOException,
- NoSuchAccountException, ConfigInvalidException, InvalidSshKeyException {
+ NoSuchAccountException, ConfigInvalidException {
ImportGroup.Input input = new ImportGroup.Input();
input.from = url;
input.user = user;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroup.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroup.java
index 24ee5f9..e2eec41 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroup.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroup.java
@@ -16,7 +16,6 @@
import static com.google.gerrit.reviewdb.client.AccountGroup.isInternalGroup;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.annotations.RequiresCapability;
import com.google.gerrit.extensions.common.AccountInfo;
@@ -117,7 +116,7 @@
@Override
public Response<String> apply(ConfigResource rsrc, Input input)
throws NoSuchAccountException, OrmException, IOException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
GroupInfo groupInfo;
this.api = apiFactory.create(input.from, input.user, input.pass);
groupInfo = api.getGroup(group.get());
@@ -129,7 +128,7 @@
private void validate(Input input, GroupInfo groupInfo)
throws IOException, OrmException, NoSuchAccountException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
if (!isInternalGroup(new AccountGroup.UUID(groupInfo.id))) {
throw new MethodNotAllowedException(String.format(
"Group with name %s is not an internal group and cannot be imported",
@@ -185,7 +184,7 @@
private CreateGroupArgs toCreateGroupArgs(GroupInfo groupInfo)
throws IOException, OrmException, NoSuchAccountException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
CreateGroupArgs args = new CreateGroupArgs();
args.setGroupName(groupInfo.name);
args.groupDescription = groupInfo.description;
@@ -203,7 +202,7 @@
private AccountGroup createGroup(Input input, GroupInfo info)
throws OrmException, NoSuchAccountException, IOException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
String uniqueName = getUniqueGroupName(info.name);
if (!info.name.equals(uniqueName)) {
log.warn(String.format("Group %s with UUID %s is imported with name %s",
@@ -282,7 +281,7 @@
private void addMembers(AccountGroup.Id groupId, List<AccountInfo> members)
throws OrmException, NoSuchAccountException, IOException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
List<AccountGroupMember> memberships = new ArrayList<>();
for (AccountInfo member : members) {
Account.Id userId = accountUtil.resolveUser(api, member);
@@ -300,7 +299,7 @@
private void addGroups(Input input, AccountGroup.Id groupId, String groupName,
List<GroupInfo> includedGroups)
throws NoSuchAccountException, OrmException, IOException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
List<AccountGroupById> includeList = new ArrayList<>();
for (GroupInfo includedGroup : includedGroups) {
if (isInternalGroup(new AccountGroup.UUID(includedGroup.id))) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroupsStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroupsStep.java
index 0e9fece..e8b0288 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroupsStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportGroupsStep.java
@@ -16,7 +16,6 @@
import static com.google.gerrit.reviewdb.client.AccountGroup.isInternalGroup;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.restapi.MethodNotAllowedException;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -78,7 +77,7 @@
}
void importGroups() throws NoSuchAccountException, OrmException, IOException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
ProjectConfig projectConfig = projectCache.get(project).getConfig();
Set<AccountGroup.UUID> groupUUIDs = projectConfig.getAllGroupUUIDs();
pm.beginTask("Import Groups", groupUUIDs.size());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
index 5d8931d..5c946c4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
@@ -18,7 +18,6 @@
import static java.lang.String.format;
import com.google.common.base.Strings;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.annotations.RequiresCapability;
import com.google.gerrit.extensions.restapi.BadRequestException;
@@ -167,7 +166,7 @@
public ImportStatistic apply(ConfigResource rsrc, Input input)
throws RestApiException, OrmException, IOException, ValidationException,
GitAPIException, NoSuchChangeException, NoSuchAccountException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
if (input == null) {
input = new Input();
}
@@ -183,7 +182,7 @@
public ResumeImportStatistic resume(String user, String pass, boolean force,
File importStatus) throws RestApiException, OrmException, IOException,
GitAPIException, NoSuchChangeException, NoSuchAccountException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
LockFile lockFile = lockForImport();
try {
ImportProjectInfo info = ImportJson.parse(importStatus);
@@ -206,8 +205,7 @@
private ResumeImportStatistic apply(LockFile lockFile, Input input,
ImportProjectInfo info) throws RestApiException, OrmException,
IOException, GitAPIException, NoSuchChangeException,
- NoSuchAccountException, UpdateException, ConfigInvalidException,
- InvalidSshKeyException {
+ NoSuchAccountException, UpdateException, ConfigInvalidException {
boolean resume = info != null;
api = apiFactory.create(input.from, input.user, input.pass);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ProjectCommand.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ProjectCommand.java
index 48e0212..e449d36 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ProjectCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ProjectCommand.java
@@ -15,7 +15,6 @@
package com.googlesource.gerrit.plugins.importer;
import com.google.common.base.Strings;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.annotations.RequiresCapability;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -74,7 +73,7 @@
protected void run()
throws OrmException, IOException, UnloggedFailure, ValidationException,
GitAPIException, NoSuchChangeException, NoSuchAccountException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
ImportProject.Input input = new ImportProject.Input();
input.from = url;
input.name = name;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
index dcb0a66..2ada0e5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
@@ -17,7 +17,6 @@
import com.google.common.collect.Iterators;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GlobalCapability;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.client.ChangeStatus;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -30,6 +29,7 @@
import com.google.gerrit.server.Sequences;
import com.google.gerrit.server.git.UpdateException;
import com.google.gerrit.server.index.change.ChangeIndexer;
+import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.query.change.ChangeData;
import com.google.gerrit.server.query.change.InternalChangeQuery;
@@ -87,6 +87,7 @@
private final boolean resume;
private final ResumeImportStatistic importStatistic;
private final ProgressMonitor pm;
+ private final boolean isNoteDbEnabled;
@Inject
ReplayChangesStep(
@@ -101,6 +102,7 @@
ChangeIndexer indexer,
Provider<InternalChangeQuery> queryProvider,
Sequences sequences,
+ NotesMigration migration,
@Assisted @Nullable String fromGerrit,
@Assisted GerritApi api,
@Assisted Repository repo,
@@ -130,11 +132,12 @@
this.resume = resume;
this.importStatistic = importStatistic;
this.pm = pm;
+ this.isNoteDbEnabled = migration.enabled();
}
void replay() throws IOException, OrmException,
NoSuchAccountException, NoSuchChangeException, RestApiException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
int start = 0;
int limit = GlobalCapability.DEFAULT_MAX_QUERY_LIMIT;
pm.beginTask("Replay Changes", ProgressMonitor.UNKNOWN);
@@ -169,7 +172,7 @@
private void replayChange(RevWalk rw, ChangeInfo c)
throws IOException, OrmException, NoSuchAccountException,
NoSuchChangeException, RestApiException, IllegalArgumentException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
if (c.status == ChangeStatus.DRAFT) {
// no import of draft changes
return;
@@ -199,7 +202,9 @@
replayInlineCommentsFactory.create(change, c, api, resumeChange).replay();
replayMessagesFactory.create(change, c, resumeChange).replay(api);
addApprovalsFactory.create(change, c, resume).add(api);
- addHashtagsFactory.create(change, c, resumeChange).add();
+ if (isNoteDbEnabled) {
+ addHashtagsFactory.create(change, c, resumeChange).add();
+ }
insertLinkToOriginalFactory.create(fromGerrit, change, c, resumeChange).insert();
@@ -219,15 +224,14 @@
new Change.Key(c.changeId)));
if (changes.isEmpty()) {
return null;
- } else {
- return db.changes().get(
- Iterators.getOnlyElement(changes.iterator()).getId());
}
+ return db.changes().get(
+ Iterators.getOnlyElement(changes.iterator()).getId());
}
private Change createChange(ChangeInfo c)
throws OrmException, NoSuchAccountException, IOException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
Change.Id changeId = new Change.Id(sequences.nextChangeId());
Change change =
@@ -252,8 +256,7 @@
private static String fullName(String branch) {
if (branch.startsWith(Constants.R_HEADS)) {
return branch;
- } else {
- return Constants.R_HEADS + branch;
}
+ return Constants.R_HEADS + branch;
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayInlineCommentsStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayInlineCommentsStep.java
index 2584978..be71dd7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayInlineCommentsStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayInlineCommentsStep.java
@@ -21,7 +21,6 @@
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.gerrit.common.TimeUtil;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.client.Side;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -111,7 +110,7 @@
void replay()
throws RestApiException, OrmException, IOException, NoSuchChangeException,
- NoSuchAccountException, ConfigInvalidException, InvalidSshKeyException {
+ NoSuchAccountException, ConfigInvalidException {
ChangeControl ctrl = control(change, change.getOwner());
for (PatchSet ps : ChangeUtil.PS_ID_ORDER
.sortedCopy(psUtil.byChange(db, ctrl.getNotes()))) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java
index dfdf892..3fb9932 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java
@@ -14,7 +14,6 @@
package com.googlesource.gerrit.plugins.importer;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.ChangeMessageInfo;
@@ -79,7 +78,7 @@
void replay(GerritApi api) throws NoSuchAccountException,
NoSuchChangeException, OrmException, IOException, RestApiException,
- ConfigInvalidException, InvalidSshKeyException {
+ ConfigInvalidException {
for (ChangeMessageInfo msg : changeInfo.messages) {
ChangeMessage.Key msgKey = new ChangeMessage.Key(change.getId(), msg.id);
if (resume && db.changeMessages().get(msgKey) != null) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayRevisionsStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayRevisionsStep.java
index e5cd3dc..50efc97 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayRevisionsStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayRevisionsStep.java
@@ -14,7 +14,6 @@
package com.googlesource.gerrit.plugins.importer;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.RevisionInfo;
@@ -82,7 +81,7 @@
void replay(GerritApi api)
throws IOException, OrmException, NoSuchAccountException,
- RestApiException, ConfigInvalidException, InvalidSshKeyException {
+ RestApiException, ConfigInvalidException {
List<RevisionInfo> revisions = new ArrayList<>(changeInfo.revisions.values());
sortRevisionInfoByNumber(revisions);
List<PatchSet> patchSets = new ArrayList<>();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ResumeCopyProject.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ResumeCopyProject.java
index 748bf4c..731e077 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ResumeCopyProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ResumeCopyProject.java
@@ -14,7 +14,6 @@
package com.googlesource.gerrit.plugins.importer;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.annotations.RequiresCapability;
@@ -82,7 +81,7 @@
public ResumeImportStatistic apply(ProjectResource rsrc, Input input)
throws RestApiException, IOException, OrmException, ValidationException,
GitAPIException, NoSuchChangeException, NoSuchAccountException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
ImportProjectResource projectResource =
projectsCollection.parse(new ConfigResource(),
IdString.fromDecoded(rsrc.getName()));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ResumeProjectImport.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ResumeProjectImport.java
index 881b6ff..a27ef44 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ResumeProjectImport.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ResumeProjectImport.java
@@ -15,7 +15,6 @@
package com.googlesource.gerrit.plugins.importer;
import com.google.common.base.Strings;
-import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.annotations.RequiresCapability;
@@ -96,7 +95,7 @@
public ResumeImportStatistic apply(ImportProjectResource rsrc, Input input)
throws RestApiException, IOException, OrmException, ValidationException,
GitAPIException, NoSuchChangeException, NoSuchAccountException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
if (copy) {
input.validateResumeCopy();
} else {
@@ -133,7 +132,7 @@
public ResumeImportStatistic apply(ProjectResource rsrc, Input input)
throws RestApiException, IOException, OrmException, ValidationException,
GitAPIException, NoSuchChangeException, NoSuchAccountException,
- UpdateException, ConfigInvalidException, InvalidSshKeyException {
+ UpdateException, ConfigInvalidException {
ImportProjectResource projectResource =
projectsCollection.parse(new ConfigResource(),
IdString.fromDecoded(rsrc.getName()));
diff --git a/src/main/resources/Documentation/rest-api-config.md b/src/main/resources/Documentation/rest-api-config.md
index 7173c6b..3af29b0 100644
--- a/src/main/resources/Documentation/rest-api-config.md
+++ b/src/main/resources/Documentation/rest-api-config.md
@@ -163,7 +163,7 @@
```
### <a id="resume-project-import"> Resume Project Import
-_GET /config/server/@PLUGIN@~projects/[\{project-name\}](../../../Documentation/rest-api-projects.html#project-name)/resume_
+_PUT /config/server/@PLUGIN@~projects/[\{project-name\}](../../../Documentation/rest-api-projects.html#project-name)/resume_
Resumes a project import.