You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2019/09/23 19:48:56 UTC

svn commit: r1867396 - in /jackrabbit/oak/trunk: oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ oak-security-spi/ oak-securi...

Author: reschke
Date: Mon Sep 23 19:48:55 2019
New Revision: 1867396

URL: http://svn.apache.org/viewvc?rev=1867396&view=rev
Log:
OAK-8641: log uses of API methods to be removed as part of OAK-7358

Added:
    jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/AclGroupDeprecation.java   (with props)
    jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/tools/
Modified:
    jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipal.java
    jackrabbit/oak/trunk/oak-security-spi/pom.xml
    jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
    jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java
    jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipal.java
    jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java
    jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java
    jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java

Modified: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java (original)
+++ jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java Mon Sep 23 19:48:55 2019
@@ -63,6 +63,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.spi.security.authentication.external.ExternalIdentityRef;
 import org.apache.jackrabbit.oak.spi.security.authentication.external.basic.DefaultSyncConfig;
 import org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalIdentityConstants;
+import org.apache.jackrabbit.oak.spi.security.principal.AclGroupDeprecation;
 import org.apache.jackrabbit.oak.spi.security.principal.GroupPrincipals;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
@@ -307,6 +308,7 @@ class ExternalGroupPrincipalProvider imp
 
         @Override
         public boolean addMember(Principal user) {
+            AclGroupDeprecation.handleCall();
             if (isMember(user)) {
                 return false;
             } else {
@@ -316,6 +318,7 @@ class ExternalGroupPrincipalProvider imp
 
         @Override
         public boolean removeMember(Principal user) {
+            AclGroupDeprecation.handleCall();
             if (!isMember(user)) {
                 return false;
             } else {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipal.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipal.java?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipal.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AbstractGroupPrincipal.java Mon Sep 23 19:48:55 2019
@@ -30,6 +30,7 @@ import org.apache.jackrabbit.api.securit
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.spi.security.principal.AclGroupDeprecation;
 import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
@@ -115,11 +116,13 @@ abstract class AbstractGroupPrincipal ex
 
     @Override
     public boolean addMember(Principal principal) {
+        AclGroupDeprecation.handleCall();
         throw new UnsupportedOperationException();
     }
 
     @Override
     public boolean removeMember(Principal principal) {
+        AclGroupDeprecation.handleCall();
         throw new UnsupportedOperationException();
     }
 }

Modified: jackrabbit/oak/trunk/oak-security-spi/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/pom.xml?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-security-spi/pom.xml Mon Sep 23 19:48:55 2019
@@ -177,6 +177,13 @@
         <artifactId>logback-classic</artifactId>
         <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-commons</artifactId>
+      <version>${project.version}</version>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>

Added: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/AclGroupDeprecation.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/AclGroupDeprecation.java?rev=1867396&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/AclGroupDeprecation.java (added)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/AclGroupDeprecation.java Mon Sep 23 19:48:55 2019
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jackrabbit.oak.spi.security.principal;
+
+import java.util.Locale;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AclGroupDeprecation {
+
+    private static final Logger LOG = LoggerFactory.getLogger(AclGroupDeprecation.class);
+
+    private static final String DEFAULT = "debug";
+
+    private static final String TLOGLEVEL = System.getProperty("org.apache.jackrabbit.oak.spi.tools.AclGroupDeprecation.LOGLEVEL",
+            DEFAULT);
+
+    private static String LOGLEVEL;
+
+    static {
+        String t;
+
+        switch (TLOGLEVEL.toLowerCase(Locale.ENGLISH)) {
+            case "error":
+            case "warn":
+            case "info":
+            case "debug":
+                t = TLOGLEVEL.toLowerCase(Locale.ENGLISH);
+                break;
+            default:
+                t = DEFAULT;
+                break;
+        }
+
+        LOGLEVEL = t;
+    }
+
+    private AclGroupDeprecation() {
+    }
+
+    public static void handleCall() throws UnsupportedOperationException {
+        String message = "use of deprecated java.acl.Group-related API - this method is going to be removed in future Oak releases - see OAK-7358 for details";
+
+        switch (LOGLEVEL) {
+            case "error":
+                if (LOG.isErrorEnabled()) {
+                    LOG.error(message, new Exception("call stack"));
+                }
+                break;
+            case "warn":
+                if (LOG.isWarnEnabled()) {
+                    LOG.warn(message, new Exception("call stack"));
+                }
+                break;
+            case "info":
+                if (LOG.isInfoEnabled()) {
+                    LOG.info(message, new Exception("call stack"));
+                }
+                break;
+            case "debug":
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug(message, new Exception("call stack"));
+                }
+                break;
+        }
+    }
+
+    // for testing
+    public static String setLogLevel(String level) {
+        String before = LOGLEVEL;
+        LOGLEVEL = level;
+        return before;
+    }
+}

Propchange: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/AclGroupDeprecation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/AclGroupDeprecation.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java Mon Sep 23 19:48:55 2019
@@ -91,6 +91,7 @@ public class CompositePrincipalProvider
     @NotNull
     @Override
     public Set<Group> getGroupMembership(@NotNull Principal principal) {
+        AclGroupDeprecation.handleCall();
         return Collections.emptySet();
     }
 

Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java Mon Sep 23 19:48:55 2019
@@ -21,6 +21,7 @@ import java.security.acl.Group;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.Set;
+
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -42,6 +43,7 @@ public final class EmptyPrincipalProvide
     @NotNull
     @Override
     public Set<Group> getGroupMembership(@NotNull Principal principal) {
+        AclGroupDeprecation.handleCall();
         return Collections.emptySet();
     }
 

Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipal.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipal.java?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipal.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipal.java Mon Sep 23 19:48:55 2019
@@ -48,11 +48,13 @@ public final class EveryonePrincipal imp
     //--------------------------------------------------------------< Group >---
     @Override
     public boolean addMember(Principal user) {
+        AclGroupDeprecation.handleCall();
         return false;
     }
 
     @Override
     public boolean removeMember(Principal user) {
+        AclGroupDeprecation.handleCall();
         throw new UnsupportedOperationException("Cannot remove a member from the everyone group.");
     }
 

Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java Mon Sep 23 19:48:55 2019
@@ -86,6 +86,7 @@ public interface PrincipalProvider {
      */
     @NotNull
     default Set<Group> getGroupMembership(@NotNull Principal principal) {
+        AclGroupDeprecation.handleCall();
         return Collections.emptySet();
     }
 

Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java Mon Sep 23 19:48:55 2019
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.7.1")
+@Version("1.8.0")
 package org.apache.jackrabbit.oak.spi.security.principal;
 
 import org.osgi.annotation.versioning.Version;

Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java?rev=1867396&r1=1867395&r2=1867396&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java Mon Sep 23 19:48:55 2019
@@ -19,7 +19,9 @@ package org.apache.jackrabbit.oak.spi.se
 import java.security.Principal;
 
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
+import org.apache.jackrabbit.oak.commons.junit.LogCustomizer;
 import org.junit.Test;
+import org.slf4j.event.Level;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
@@ -39,7 +41,62 @@ public class EmptyPrincipalProviderTest
     }
 
     @Test
-    public void testGetGroupMembership() {
+    public void testGetGroupMembershipOnDebug() {
+        String prev = AclGroupDeprecation.setLogLevel("debug");
+        LogCustomizer customLogs = LogCustomizer.forLogger(AclGroupDeprecation.class.getName()).enable(Level.DEBUG).create();
+        try {
+            customLogs.starting();
+            testGetGroupMembership();
+            assertTrue(customLogs.getLogs().size() == 1);
+        } finally {
+            customLogs.finished();
+            AclGroupDeprecation.setLogLevel(prev);
+        }
+    }
+
+    @Test
+    public void testGetGroupMembershipOnInfo() {
+        String prev = AclGroupDeprecation.setLogLevel("info");
+        LogCustomizer customLogs = LogCustomizer.forLogger(AclGroupDeprecation.class.getName()).enable(Level.INFO).create();
+        try {
+            customLogs.starting();
+            testGetGroupMembership();
+            assertTrue(customLogs.getLogs().size() == 1);
+        } finally {
+            customLogs.finished();
+            AclGroupDeprecation.setLogLevel(prev);
+        }
+    }
+
+    @Test
+    public void testGetGroupMembershipOnWarn() {
+        String prev = AclGroupDeprecation.setLogLevel("warn");
+        LogCustomizer customLogs = LogCustomizer.forLogger(AclGroupDeprecation.class.getName()).enable(Level.WARN).create();
+        try {
+            customLogs.starting();
+            testGetGroupMembership();
+            assertTrue(customLogs.getLogs().size() == 1);
+        } finally {
+            customLogs.finished();
+            AclGroupDeprecation.setLogLevel(prev);
+        }
+    }
+
+    @Test
+    public void testGetGroupMembershipOnError() {
+        String prev = AclGroupDeprecation.setLogLevel("error");
+        LogCustomizer customLogs = LogCustomizer.forLogger(AclGroupDeprecation.class.getName()).enable(Level.ERROR).create();
+        try {
+            customLogs.starting();
+            testGetGroupMembership();
+            assertTrue(customLogs.getLogs().size() == 1);
+        } finally {
+            customLogs.finished();
+            AclGroupDeprecation.setLogLevel(prev);
+        }
+    }
+
+    private void testGetGroupMembership() {
         assertTrue(principalProvider.getGroupMembership(mock(Principal.class)).isEmpty());
     }