Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.
SOLVED

how to add more than one pattern to slingServletFilter?

Avatar

Level 9

We want a logging filter to support multiple different groups of endpoints, e.g. /bin/proxy/.*, /bin/someApi/v2.* etc.  We could try to create a regexp that matches each pattern we want to add, or is there a way to add multiple patterns?  Or we could create a filter for each pattern, and point to some common code.

 

@SlingServletFilter(scope = { SlingServletFilterScope.REQUEST }, pattern = "/bin/someApi/v2/.*", methods = { "GET",
"POST" })

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @TB3dock,

Base on documentation:

Pattern attribute accepts single String value.

Answering your question multiple patters are not supported, to achieve your goal you should follow one of the option you already mentioned:

  • combine multiple patterns into one - this option will be good if you have exactly the same logic for each patter
  • create separate filter for each pattern, and extract common part to some external/abstract class - this will be an alternative to the option #1
  • create separate filter for each pattern - this is obvious choice when you would like to handle requests differently depending on the pattern it matches

View solution in original post

3 Replies

Avatar

Community Advisor

It can be done by using attribute 'sling.filter.pattern'. Please have a look at the below URL for more details.

https://sling.apache.org/documentation/the-sling-engine/filters.html

Avatar

Correct answer by
Community Advisor

Hi @TB3dock,

Base on documentation:

Pattern attribute accepts single String value.

Answering your question multiple patters are not supported, to achieve your goal you should follow one of the option you already mentioned:

  • combine multiple patterns into one - this option will be good if you have exactly the same logic for each patter
  • create separate filter for each pattern, and extract common part to some external/abstract class - this will be an alternative to the option #1
  • create separate filter for each pattern - this is obvious choice when you would like to handle requests differently depending on the pattern it matches