You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2022/05/14 08:56:30 UTC
[jena] branch main updated: GH-1302: Before and after servlet filters. Default to the "before" ones.
This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/main by this push:
new 57d144306f GH-1302: Before and after servlet filters. Default to the "before" ones.
new 2042994e8f Merge pull request #1303 from afs/servlet-filters
57d144306f is described below
commit 57d144306f1d1e370e40732b59f8367dacc0bb7c
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Fri May 13 14:07:40 2022 +0100
GH-1302: Before and after servlet filters. Default to the "before" ones.
---
.../java/org/apache/jena/fuseki/main/FusekiServer.java | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
index 06c05b3153..7d6e9483cf 100644
--- a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
@@ -417,8 +417,9 @@ public class FusekiServer {
// Order does not matter, the rules of pathspec dispatch are "exact match"
// before "prefix match".
private Map<String, HttpServlet> servlets = new HashMap<>();
- // whereas several filters can share a path spec an dorder matters.
- private List<Pair<String, Filter>> filters = new ArrayList<>();
+ // whereas several filters can share a path spec and order matters.
+ private List<Pair<String, Filter>> beforeFilters = new ArrayList<>();
+ private List<Pair<String, Filter>> afterFilters = new ArrayList<>();
private String contextPath = "/";
private String staticContentDir = null;
@@ -1000,7 +1001,7 @@ public class FusekiServer {
public Builder addFilter(String pathSpec, Filter filter) {
requireNonNull(pathSpec, "pathSpec");
requireNonNull(filter, "filter");
- filters.add(Pair.create(pathSpec, filter));
+ beforeFilters.add(Pair.create(pathSpec, filter));
return this;
}
@@ -1405,7 +1406,10 @@ public class FusekiServer {
addFilterHolder(context, "/*", holder);
}
- // End of chain. May dispatch and not pass on requests.
+ beforeFilters.forEach(pair -> addFilter(context, pair.getLeft(), pair.getRight()));
+
+ // End of chain though there may be custom "afterFilters".
+ // This servlet filter may dispatch and not pass on requests.
// Looks for any URL that starts with a dataset name.
FusekiFilter ff = new FusekiFilter();
addFilter(context, "/*", ff);
@@ -1423,7 +1427,7 @@ public class FusekiServer {
addServlet(context, "/$/tasks/*", new ActionTasks());
servlets.forEach((pathspecp, servlet) -> addServlet(context, pathspecp, servlet));
- filters.forEach(pair -> addFilter(context, pair.getLeft(), pair.getRight()));
+ afterFilters.forEach(pair -> addFilter(context, pair.getLeft(), pair.getRight()));
// Finally, drop to state content if configured.
if ( staticContentDir != null ) {