diff --git a/pom.xml b/pom.xml
index f5cdd91..1862777 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,6 +24,11 @@
spring-boot-starter-web
3.3.2
+
+ org.springframework.boot
+ spring-boot-starter-json
+ 3.3.2
+
org.hibernate
diff --git a/src/main/java/wtf/beatrice/releasehive/AccountController.java b/src/main/java/wtf/beatrice/releasehive/AccountController.java
deleted file mode 100644
index a1d2b67..0000000
--- a/src/main/java/wtf/beatrice/releasehive/AccountController.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package wtf.beatrice.releasehive;
-
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.UUID;
-
-@RestController
-public class AccountController {
-
- private final AccountService accountService = new AccountService();
-
-
- @PostMapping("/register")
- public String register(
- @RequestParam(name = "username") String username,
- @RequestParam(name="password") String password)
- {
-
- UUID id = UUID.randomUUID();
- User user = new User();
- user.setUsername(username);
- user.setPassword(password);
- user.setUuid(id);
- accountService.registerUser(user);
- return "user registered, " + username + ", " + password + ", " + id.toString();
- }
-}
diff --git a/src/main/java/wtf/beatrice/releasehive/AccountResource.java b/src/main/java/wtf/beatrice/releasehive/AccountResource.java
new file mode 100644
index 0000000..8d634bb
--- /dev/null
+++ b/src/main/java/wtf/beatrice/releasehive/AccountResource.java
@@ -0,0 +1,27 @@
+package wtf.beatrice.releasehive;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.UUID;
+
+@RequestMapping("/api/v1/users")
+@RestController
+public class AccountResource {
+
+ private final AccountService accountService = new AccountService();
+
+
+ @PostMapping(
+ value="/register",
+ produces="application/json")
+ public String register(@RequestBody User user)
+ {
+ UUID id = UUID.randomUUID();
+ user.setUuid(id);
+ accountService.registerUser(user);
+
+ return JsonUtil.convertToJson(user);
+ }
+}
diff --git a/src/main/java/wtf/beatrice/releasehive/AccountService.java b/src/main/java/wtf/beatrice/releasehive/AccountService.java
index 452fc1e..dcb9f84 100644
--- a/src/main/java/wtf/beatrice/releasehive/AccountService.java
+++ b/src/main/java/wtf/beatrice/releasehive/AccountService.java
@@ -8,8 +8,8 @@ public class AccountService
public void registerUser(User user) {
Session session = HibernateManager.getSession();
- Transaction tx = session.beginTransaction();
+ Transaction transaction = session.beginTransaction();
session.save(user);
- tx.commit();
+ transaction.commit();
}
}
diff --git a/src/main/java/wtf/beatrice/releasehive/JsonUtil.java b/src/main/java/wtf/beatrice/releasehive/JsonUtil.java
new file mode 100644
index 0000000..efaaf2d
--- /dev/null
+++ b/src/main/java/wtf/beatrice/releasehive/JsonUtil.java
@@ -0,0 +1,21 @@
+package wtf.beatrice.releasehive;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class JsonUtil
+{
+ private static final Logger LOGGER = LogManager.getLogger(JsonUtil.class);
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+
+ public static String convertToJson(Object input) {
+ try {
+ return MAPPER.writeValueAsString(input);
+ } catch (JsonProcessingException e) {
+ LOGGER.error(e);
+ return e.getMessage();
+ }
+ }
+}