From 1d780e97c2ec280af2d06419afe446d77c7d4913 Mon Sep 17 00:00:00 2001 From: Thomas Heigl Date: Thu, 22 Aug 2024 07:41:30 +0200 Subject: [PATCH] #1007 Do not bind session as a side effect when removing pages (#1008) --------- Co-authored-by: Martin Grigorov Co-authored-by: Maxim Solodovnik --- .../common/SessionQuotaManagingDataStore.java | 9 +-------- .../SessionQuotaManagingDataStoreTest.java | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/datastores-parent/datastore-common/src/main/java/org/wicketstuff/datastores/common/SessionQuotaManagingDataStore.java b/datastores-parent/datastore-common/src/main/java/org/wicketstuff/datastores/common/SessionQuotaManagingDataStore.java index 222da17dd5..4b29a2e040 100644 --- a/datastores-parent/datastore-common/src/main/java/org/wicketstuff/datastores/common/SessionQuotaManagingDataStore.java +++ b/datastores-parent/datastore-common/src/main/java/org/wicketstuff/datastores/common/SessionQuotaManagingDataStore.java @@ -66,14 +66,7 @@ public SessionQuotaManagingDataStore(IPageStore delegate, Bytes maxBytes) private SessionData getSessionData(IPageContext context, boolean create) { - return context.getSessionData(KEY, () -> { - if (create) - { - return dataCreator.get(); - } - - return null; - }); + return context.getSessionData(KEY, create ? dataCreator : null); } @Override diff --git a/datastores-parent/datastore-tests/src/main/java/org/wicketstuff/datastores/common/SessionQuotaManagingDataStoreTest.java b/datastores-parent/datastore-tests/src/main/java/org/wicketstuff/datastores/common/SessionQuotaManagingDataStoreTest.java index 35b5eaa85e..3027e696df 100644 --- a/datastores-parent/datastore-tests/src/main/java/org/wicketstuff/datastores/common/SessionQuotaManagingDataStoreTest.java +++ b/datastores-parent/datastore-tests/src/main/java/org/wicketstuff/datastores/common/SessionQuotaManagingDataStoreTest.java @@ -1,10 +1,13 @@ package org.wicketstuff.datastores.common; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; +import org.apache.wicket.MetaDataKey; import org.apache.wicket.mock.MockPageContext; import org.apache.wicket.mock.MockPageStore; import org.apache.wicket.pageStore.IPageContext; @@ -97,7 +100,19 @@ public void removePage() { } @Test - void addPageDoesNotRemovePageFromDelegate() { + public void removePageShouldNotSupplyDefaultValueWhenGettingSessionData() { + MockPageStore delegate = new MockPageStore(); + + IPageContext context = mock(IPageContext.class); + + IPageStore quotaStore = new SessionQuotaManagingDataStore(delegate, Bytes.bytes(page1.getData().length + page3.getData().length)); + quotaStore.removePage(context, page1); + + verify(context).getSessionData(any(MetaDataKey.class), eq(null)); + } + + @Test + void addPageDoesNotRemovePageFromDelegate() { IPageStore delegate = mock(IPageStore.class); IPageContext context = new MockPageContext();