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": []