diff --git a/spring-web-modules/spring-mvc-basics-2/pom.xml b/spring-web-modules/spring-mvc-basics-2/pom.xml index cefc5656995a..25d1e84b6fa0 100644 --- a/spring-web-modules/spring-mvc-basics-2/pom.xml +++ b/spring-web-modules/spring-mvc-basics-2/pom.xml @@ -116,6 +116,10 @@ json ${json.version} + + com.fasterxml.jackson.core + jackson-databind + diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/EnumController.java b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/controller/EnumController.java similarity index 66% rename from spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/EnumController.java rename to spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/controller/EnumController.java index 356e751d5e25..2db6ce71289e 100644 --- a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/EnumController.java +++ b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/controller/EnumController.java @@ -1,11 +1,14 @@ -package com.baeldung.spring.enums; +package com.baeldung.spring.enums.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.baeldung.spring.enums.entity.ModeEntity; import com.baeldung.spring.model.Modes; @RestController @@ -21,4 +24,10 @@ public String getStringToMode(@RequestParam("mode") Modes mode) { public String findByEnum(@PathVariable Modes mode) { return "good"; } + + @PostMapping("/create-modes") + public String create(@RequestBody ModeEntity entity) { + return "created"; + } + } \ No newline at end of file diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/entity/ModeEntity.java b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/entity/ModeEntity.java new file mode 100644 index 000000000000..976f64293650 --- /dev/null +++ b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/entity/ModeEntity.java @@ -0,0 +1,36 @@ +package com.baeldung.spring.enums.entity; + +import com.baeldung.spring.model.Modes; + +public class ModeEntity { + + private Long id; + + private String name; + + private Modes mode; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Modes getMode() { + return mode; + } + + public void setMode(Modes mode) { + this.mode = mode; + } +} diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/model/Modes.java b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/model/Modes.java index dc05448f3fea..3b3b3a3e924e 100644 --- a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/model/Modes.java +++ b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/model/Modes.java @@ -1,5 +1,35 @@ package com.baeldung.spring.model; +import com.fasterxml.jackson.annotation.JsonCreator; + public enum Modes { - ALPHA, BETA; + ALPHA("A"), + BETA("B"); + + private final String text; + + Modes(String text) { + this.text = text; + } + + public String getText() { + return this.text; + } + + @JsonCreator + public static Modes fromText(String text) { + for (Modes modes : Modes.values()) { + if (modes.getText() + .equals(text)) { + return modes; + } + } + throw new IllegalArgumentException("Unknown mode value: " + text); + } + + @Override + public String toString() { + return text; + } + } diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/resources/application.properties b/spring-web-modules/spring-mvc-basics-2/src/main/resources/application.properties index 7ca8d33d5cf2..8fda22a70e7a 100644 --- a/spring-web-modules/spring-mvc-basics-2/src/main/resources/application.properties +++ b/spring-web-modules/spring-mvc-basics-2/src/main/resources/application.properties @@ -30,3 +30,5 @@ attachment.invoice=path_to_file spring.mail.templates.path=mail-templates #spring.mail.templates.path=/path/to/templates + + diff --git a/spring-web-modules/spring-mvc-basics-2/src/test/java/com/baeldung/spring/enums/entity/ModeDeserializationUnitTest.java b/spring-web-modules/spring-mvc-basics-2/src/test/java/com/baeldung/spring/enums/entity/ModeDeserializationUnitTest.java new file mode 100644 index 000000000000..9343f090b546 --- /dev/null +++ b/spring-web-modules/spring-mvc-basics-2/src/test/java/com/baeldung/spring/enums/entity/ModeDeserializationUnitTest.java @@ -0,0 +1,19 @@ +package com.baeldung.spring.enums.entity; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import com.baeldung.spring.model.Modes; +import com.fasterxml.jackson.databind.ObjectMapper; + +class ModeDeserializationUnitTest { + + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void whenJsonContainsA_thenDeserializesToAlpha() throws Exception { + ModeEntity entity = objectMapper.readValue("{\"mode\": \"A\"}", ModeEntity.class); + + assertEquals(Modes.ALPHA, entity.getMode()); + } +} \ No newline at end of file