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(); + } + } +}