Skip to content

Commit 6083815

Browse files
committed
Issue #12725 reset match indexes for FilterMappings on setFilterMappings
1 parent dc685b6 commit 6083815

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java

+2
Original file line numberDiff line numberDiff line change
@@ -1395,6 +1395,8 @@ public void setFilterMappings(FilterMapping[] filterMappings)
13951395
if (isRunning())
13961396
updateMappings();
13971397
invalidateChainsCache();
1398+
_matchBeforeIndex = -1;
1399+
_matchAfterIndex = -1;
13981400
}
13991401
}
14001402

jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletHandlerTest.java

+43
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import static org.hamcrest.Matchers.contains;
4343
import static org.hamcrest.Matchers.containsString;
4444
import static org.hamcrest.Matchers.is;
45+
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
4546
import static org.junit.jupiter.api.Assertions.assertEquals;
4647
import static org.junit.jupiter.api.Assertions.assertFalse;
4748
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -850,6 +851,48 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IO
850851
assertThat(connector.getResponse("GET /other.bob HTTP/1.0\r\n\r\n"), containsString("path-/*-path-*.bob-default"));
851852
}
852853

854+
@Test
855+
public void testFilterMappingsResetAfterStart() throws Exception
856+
{
857+
Server server = new Server();
858+
ServletContextHandler context = new ServletContextHandler("/");
859+
server.setHandler(context);
860+
861+
ServletHandler handler = context.getServletHandler();
862+
List<FilterHolder> filterHolders = new ArrayList<>();
863+
fh1.setFilter(new SomeFilter());
864+
fh2.setFilter(new SomeFilter());
865+
fh3.setFilter(new SomeFilter());
866+
filterHolders.add(fh1);
867+
filterHolders.add(fh2);
868+
List<FilterMapping> filterMappings = new ArrayList<>();
869+
filterMappings.add(fm1);
870+
filterMappings.add(fm2);
871+
872+
handler.setFilters(filterHolders.toArray(
873+
new FilterHolder[filterHolders.size()]
874+
));
875+
handler.setFilterMappings(filterMappings.toArray(
876+
new FilterMapping[filterMappings.size()]
877+
));
878+
879+
handler.addFilter(fh3, fm3);
880+
881+
server.start();
882+
883+
context.stop();
884+
885+
assertDoesNotThrow(() ->
886+
{
887+
handler.setFilters(null);
888+
handler.setFilterMappings(null);
889+
handler.addFilter(fh1, fm1);
890+
handler.addFilter(fh2, fm2);
891+
handler.addFilter(fh3, fm3);
892+
context.start();
893+
});
894+
}
895+
853896
@Test
854897
public void testDurable() throws Exception
855898
{

0 commit comments

Comments
 (0)