From 3aabd07eac27f7c5f16334890626320634c33889 Mon Sep 17 00:00:00 2001 From: kliushnichenko Date: Tue, 2 Apr 2024 19:14:15 +0300 Subject: [PATCH] closes https://github.com/jooby-project/jooby/issues/3400 --- .../java/io/jooby/internal/RouterImpl.java | 3 +- .../test/java/io/jooby/i3400/Issue3400.java | 39 +++++++++++++++++++ tests/src/test/java/io/jooby/i3400/Pet.java | 27 +++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 tests/src/test/java/io/jooby/i3400/Issue3400.java create mode 100644 tests/src/test/java/io/jooby/i3400/Pet.java diff --git a/jooby/src/main/java/io/jooby/internal/RouterImpl.java b/jooby/src/main/java/io/jooby/internal/RouterImpl.java index fba5ac1d39..c2e3704ca3 100644 --- a/jooby/src/main/java/io/jooby/internal/RouterImpl.java +++ b/jooby/src/main/java/io/jooby/internal/RouterImpl.java @@ -908,8 +908,7 @@ private void copy(Route src, Route it) { it.setExecutorKey(src.getExecutorKey()); it.setTags(src.getTags()); it.setDescription(src.getDescription()); - it.setDecoders(src.getDecoders()); - it.setMvcMethod(it.getMvcMethod()); + it.setMvcMethod(src.getMvcMethod()); it.setNonBlocking(src.isNonBlocking()); it.setSummary(src.getSummary()); } diff --git a/tests/src/test/java/io/jooby/i3400/Issue3400.java b/tests/src/test/java/io/jooby/i3400/Issue3400.java new file mode 100644 index 0000000000..bc944a6606 --- /dev/null +++ b/tests/src/test/java/io/jooby/i3400/Issue3400.java @@ -0,0 +1,39 @@ +package io.jooby.i3400; + +import io.jooby.Jooby; +import io.jooby.jackson.JacksonModule; +import io.jooby.junit.ServerTest; +import io.jooby.junit.ServerTestRunner; +import okhttp3.MediaType; +import okhttp3.RequestBody; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Issue3400 { + + static class AppA extends Jooby { + { + post("/pets", ctx -> ctx.body(Pet.class)); + } + } + + @ServerTest + public void shouldShareDecodersOnMountedResources(ServerTestRunner runner) { + runner + .define( + app -> { + app.install(new JacksonModule()); + app.mount(new AppA()); + }) + .ready( + http -> { + http.post( + "/pets", + RequestBody.create("{\"id\": 1, \"name\": \"Cheddar\"}", MediaType.parse("application/json")), + rsp -> { + assertEquals("{\"id\":1,\"name\":\"Cheddar\"}", rsp.body().string()); + assertEquals("application/json;charset=UTF-8", rsp.header("Content-Type")); + }); + }); + } +} diff --git a/tests/src/test/java/io/jooby/i3400/Pet.java b/tests/src/test/java/io/jooby/i3400/Pet.java new file mode 100644 index 0000000000..0aca6c76c8 --- /dev/null +++ b/tests/src/test/java/io/jooby/i3400/Pet.java @@ -0,0 +1,27 @@ +package io.jooby.i3400; + +class Pet { + private int id; + private String name; + + public Pet(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +}