This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/ease-use-of-filterproviderimpl
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 7ee3c901c3925b5da8deb71d8f468771f0c7a3af
Author: Konrad Windszus <[email protected]>
AuthorDate: Mon Jul 3 18:26:40 2023 +0200

    OAK-10332 Allow reusing FilterProviderImpl outside OSGi context
---
 .../principalbased/impl/FilterProviderImpl.java    | 27 ++++++++++++++++------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git 
a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
 
b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
index 6f4233332a..eb903887de 100644
--- 
a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
+++ 
b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
@@ -76,6 +76,15 @@ public class FilterProviderImpl implements FilterProvider {
     private final Map<String, String> validatedPrincipalNamesPathMap = 
Maps.newConcurrentMap();
     private final Map<String, String> unsupportedPrincipalNames = 
Maps.newConcurrentMap();
 
+    /**
+     * Constructor to use outside OSGi containers
+     * @param oakPath the repository path where the principals are located
+     * @since 1.54
+     */
+    public FilterProviderImpl(String oakPath) {
+        setPath(oakPath);
+    }
+
     //-----------------------------------------------------< FilterProvider 
>---
 
     @Override
@@ -98,19 +107,23 @@ public class FilterProviderImpl implements FilterProvider {
 
     //----------------------------------------------------< SCR Integration 
>---
 
+    public FilterProviderImpl() {
+        // constructor to use from SCR (not yet possible to use constructor 
injection, see https://issues.apache.org/jira/browse/OAK-9837)
+    }
+
     @Activate
-    protected void activate(Configuration configuration, Map<String, Object> 
properties) {
-        setPath(configuration);
+    protected void activate(Configuration configuration) {
+        setPath(configuration.path());
     }
 
     @Modified
-    protected void modified(Configuration configuration, Map<String, Object> 
properties) {
-        setPath(configuration);
+    protected void modified(Configuration configuration) {
+        setPath(configuration.path());
     }
 
-    private void setPath(@NotNull Configuration configuration) {
-        checkState(isValidPath(configuration.path()), "Configured path must be 
a valid absolute path.");
-        oakPath = configuration.path();
+    private void setPath(String path) {
+        checkState(isValidPath(path), "Configured path must be a valid 
absolute path.");
+        oakPath = path;
     }
 
     private static boolean isValidPath(@Nullable String path) {

Reply via email to