Return ServiceUserInfo from REST endpoint that creates a service user
Instead of just returning AccountInfo return ServiceUserInfo on
service user creation. ServiceUserinfo is an AccountInfo but provides
some additional fields.
Change-Id: I3fd0c0c8bce60d278b9e8075cd21436aabac071b
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java
index 80b3e2a..ab9222e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java
@@ -42,6 +42,7 @@
import com.google.inject.assistedinject.Assisted;
import com.googlesource.gerrit.plugins.serviceuser.CreateServiceUser.Input;
+import com.googlesource.gerrit.plugins.serviceuser.ListServiceUsers.ServiceUserInfo;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.PersonIdent;
@@ -115,7 +116,7 @@
}
@Override
- public Response<AccountInfo> apply(ConfigResource resource, Input input)
+ public Response<ServiceUserInfo> apply(ConfigResource resource, Input input)
throws BadRequestException, ResourceConflictException,
UnprocessableEntityException, OrmException, IOException {
if (input == null) {
@@ -146,16 +147,20 @@
Response<AccountInfo> response =
createAccountFactory.create(username).apply(TopLevelResource.INSTANCE, in);
+ String creator = userProvider.get().getUserName();
+ String creationDate = rfc2822DateFormatter.format(new Date());
+
Config db = storage.get();
- db.setString(USER, username, KEY_CREATED_BY,
- userProvider.get().getUserName());
- db.setString(USER, username, KEY_CREATED_AT,
- rfc2822DateFormatter.format(new Date()));
+ db.setString(USER, username, KEY_CREATED_BY, creator);
+ db.setString(USER, username, KEY_CREATED_AT, creationDate);
MetaDataUpdate md = metaDataUpdateFactory.create(allProjects);
md.setMessage("Create Service User '" + username + "'\n");
storage.commit(md);
- return response;
+ ServiceUserInfo info = new ServiceUserInfo(response.value());
+ info.createdBy = creator;
+ info.createdAt = creationDate;
+ return Response.created(info);
}
}
diff --git a/src/main/resources/Documentation/rest-api-config.md b/src/main/resources/Documentation/rest-api-config.md
index ac55b5a..4dfc20c 100644
--- a/src/main/resources/Documentation/rest-api-config.md
+++ b/src/main/resources/Documentation/rest-api-config.md
@@ -33,8 +33,8 @@
}
```
-As response a detailed [AccountInfo](../../../Documentation/rest-api-accounts.html#account-info)
-entity is returned that describes the created account.
+As response a [ServiceUserInfo](#service-user-info) entity is returned
+that describes the created account.
#### Response
@@ -45,6 +45,8 @@
)]}'
{
+ "created_by": "jdoe",
+ "created_at": "Thu, 21 Nov 2013 15:00:55 +0100",
"_account_id": 1000195,
"name": "JenkinsVoter",
"avatars": []