Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions core/play-java/src/test/java/play/mvc/AttributesTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package play.mvc;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.util.Arrays;
Expand All @@ -16,6 +17,7 @@
import play.core.j.RequestHeaderImpl;
import play.libs.typedmap.TypedEntry;
import play.libs.typedmap.TypedKey;
import play.libs.typedmap.TypedMap;

@RunWith(Parameterized.class)
public final class AttributesTest {
Expand Down Expand Up @@ -118,4 +120,24 @@ public void testRequestHeader_OverrideExistingValueWhenAddingMultipleAttributes(
assertEquals(((Long) 5L), newRequestHeader.attrs().get(number));
assertEquals("white", newRequestHeader.attrs().get(color));
}

@Test
public void testRequestHeader_emptyAttributesCookies() {
Http.RequestHeader newRequestHeader = requestHeader.withAttrs(TypedMap.empty());
assertFalse(newRequestHeader.cookies().iterator().hasNext());
}

@Test
public void testRequestHeader_emptyAttributesSession() {
Http.RequestHeader newRequestHeader = requestHeader.withAttrs(TypedMap.empty());
assertTrue(newRequestHeader.session().data().isEmpty());
assertTrue(newRequestHeader.session().asScala().isEmpty());
}

@Test
public void testRequestHeader_emptyAttributesFlash() {
Http.RequestHeader newRequestHeader = requestHeader.withAttrs(TypedMap.empty());
assertTrue(newRequestHeader.flash().data().isEmpty());
assertTrue(newRequestHeader.flash().asScala().isEmpty());
}
}
10 changes: 8 additions & 2 deletions core/play/src/main/java/play/mvc/Http.java
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,10 @@ default Long id() {
* {@link Cell} to store the session cookie, to allow it to be evaluated on-demand.
*/
default Session session() {
return attrs().get(RequestAttrKey.Session().asJava()).value().asJava();
return attrs()
.getOptional(RequestAttrKey.Session().asJava())
.map(cell -> cell.value().asJava())
.orElseGet(() -> new Session());
}

/**
Expand All @@ -402,7 +405,10 @@ default Session session() {
* store the flash, to allow it to be evaluated on-demand.
*/
default Flash flash() {
return attrs().get(RequestAttrKey.Flash().asJava()).value().asJava();
return attrs()
.getOptional(RequestAttrKey.Flash().asJava())
.map(cell -> cell.value().asJava())
.orElseGet(() -> new Flash());
}

/**
Expand Down
Loading