Skip to content
This repository was archived by the owner on Mar 3, 2026. It is now read-only.

Commit 92f5256

Browse files
committed
req.cookie(String) should returns a Mutant (not a cookie) fix jooby-project#160
1 parent dbfbd38 commit 92f5256

File tree

8 files changed

+23
-16
lines changed

8 files changed

+23
-16
lines changed

coverage-report/src/test/java/org/jooby/cookies/CookiesFeature.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import static org.junit.Assert.assertTrue;
55

66
import java.util.List;
7-
import java.util.Optional;
87

98
import org.jooby.Cookie;
9+
import org.jooby.Mutant;
1010
import org.jooby.mvc.Path;
1111
import org.jooby.test.ServerFeature;
1212
import org.junit.Test;
@@ -33,8 +33,8 @@ public String list(final List<Cookie> cookies) {
3333
get("/get", (req, rsp) -> {
3434
// no path for netty
3535
assertTrue(req.cookies().toString().startsWith("[X=x;Version=1"));
36-
Optional<Cookie> cookie = req.cookie("X");
37-
rsp.send(cookie.isPresent() ? "present" : "deleted");
36+
Mutant cookie = req.cookie("X");
37+
rsp.send(cookie.isSet() ? "present" : "deleted");
3838
});
3939

4040
get("/nocookies", (req, rsp) -> {

coverage-report/src/test/java/org/jooby/session/SessionIdWithSecretFeature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public String generateID() {
2626
});
2727

2828
get("/sessionCookie", (req, rsp) -> {
29-
rsp.send("jooby.sid=" + req.cookie("jooby.sid").get().value().get() + ";"
29+
rsp.send("jooby.sid=" + req.cookie("jooby.sid").value() + ";"
3030
+ req.session().id());
3131
});
3232

jooby/src/main/java/org/jooby/Request.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public Map<String, Mutant> headers() {
137137
}
138138

139139
@Override
140-
public Optional<Cookie> cookie(final String name) {
140+
public Mutant cookie(final String name) {
141141
return req.cookie(name);
142142
}
143143

@@ -513,7 +513,7 @@ default Optional<MediaType> accepts(final MediaType... types) {
513513
* @param name Cookie's name.
514514
* @return A cookie or an empty optional.
515515
*/
516-
Optional<Cookie> cookie(String name);
516+
Mutant cookie(String name);
517517

518518
/**
519519
* @return All the cookies.

jooby/src/main/java/org/jooby/internal/RequestImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,13 @@ public Map<String, Mutant> headers() {
209209
}
210210

211211
@Override
212-
public Optional<Cookie> cookie(final String name) {
213-
return req.cookies().stream().filter(c -> c.name().equalsIgnoreCase(name)).findFirst();
212+
public Mutant cookie(final String name) {
213+
List<String> values = req.cookies().stream().filter(c -> c.name().equalsIgnoreCase(name))
214+
.findFirst()
215+
.map(cookie -> ImmutableList.of(cookie.value().get()))
216+
.orElse(ImmutableList.of());
217+
218+
return new MutantImpl(require(ParserExecutor.class), new StrParamReferenceImpl(name, values));
214219
}
215220

216221
@Override

jooby/src/main/java/org/jooby/internal/SessionManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ public Session create(final Request req, final Response rsp) {
123123
}
124124

125125
public Session get(final Request req, final Response rsp) {
126-
return req.cookie(template.name().get())
126+
return req.cookie(template.name().get()).toOptional()
127127
.map(cookie -> {
128-
String sessionId = unsign(cookie.value().get());
128+
String sessionId = unsign(cookie);
129129
log.debug("loading session: {}", sessionId);
130130
Session session = store.get(
131131
new SessionImpl.Builder(resolver, false, sessionId, timeout)

jooby/src/main/java/org/jooby/internal/reqparam/RequestParam.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,12 @@ private interface GetValue {
8080
/**
8181
* Cookie
8282
*/
83-
builder.put(TypeLiteral.get(Cookie.class), (req, rsp, param) -> req.cookie(param.name).get());
83+
builder.put(TypeLiteral.get(Cookie.class), (req, rsp, param) -> req.cookies().stream()
84+
.filter(c -> c.name().equalsIgnoreCase(param.name)).findFirst().get());
8485
builder.put(TypeLiteral.get(Types.listOf(Cookie.class)), (req, rsp, param) -> req.cookies());
8586
builder.put(TypeLiteral.get(Types.newParameterizedType(Optional.class, Cookie.class)),
86-
(req, rsp, param) -> req.cookie(param.name)
87+
(req, rsp, param) -> req.cookies().stream()
88+
.filter(c -> c.name().equalsIgnoreCase(param.name)).findFirst()
8789
);
8890
/**
8991
* Header

jooby/src/test/java/org/jooby/RequestForwardingTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,13 +218,13 @@ public void headers() throws Exception {
218218

219219
@Test
220220
public void cookie() throws Exception {
221-
new MockUnit(Request.class, Cookie.class)
221+
new MockUnit(Request.class, Mutant.class)
222222
.expect(unit -> {
223223
Request req = unit.get(Request.class);
224-
expect(req.cookie("c")).andReturn(Optional.of(unit.get(Cookie.class)));
224+
expect(req.cookie("c")).andReturn(unit.get(Mutant.class));
225225
})
226226
.run(unit -> {
227-
assertEquals(Optional.of(unit.get(Cookie.class)),
227+
assertEquals(unit.get(Mutant.class),
228228
new Request.Forwarding(unit.get(Request.class)).cookie("c"));
229229
});
230230
}

jooby/src/test/java/org/jooby/RequestTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public Map<String, Mutant> headers() {
5656
}
5757

5858
@Override
59-
public Optional<Cookie> cookie(final String name) {
59+
public Mutant cookie(final String name) {
6060
throw new UnsupportedOperationException();
6161
}
6262

0 commit comments

Comments
 (0)