From 10e686608dd3c963ec88dfd7968424331330d584 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Wed, 10 May 2017 16:00:35 +0200 Subject: Add method UserSession#keepAuthorizedComponents() to be able to fix authorization performance hotspot --- .../main/java/org/sonar/ce/user/CeUserSession.java | 6 ++++++ .../java/org/sonar/ce/user/CeUserSessionTest.java | 22 ++++++---------------- 2 files changed, 12 insertions(+), 16 deletions(-) (limited to 'server/sonar-ce') diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/user/CeUserSession.java b/server/sonar-ce/src/main/java/org/sonar/ce/user/CeUserSession.java index 77c78ce31c9..36d4c8c2928 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/user/CeUserSession.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/user/CeUserSession.java @@ -20,6 +20,7 @@ package org.sonar.ce.user; import java.util.Collection; +import java.util.List; import org.sonar.db.component.ComponentDto; import org.sonar.db.organization.OrganizationDto; import org.sonar.db.user.GroupDto; @@ -121,6 +122,11 @@ public class CeUserSession implements UserSession { throw notImplemented(); } + @Override + public List keepAuthorizedComponents(String permission, Collection components) { + throw notImplemented(); + } + private static RuntimeException notImplemented() { throw new UnsupportedOperationException(UOE_MESSAGE); } diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/user/CeUserSessionTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/user/CeUserSessionTest.java index fc9063f5cca..ed75e2a1e25 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/user/CeUserSessionTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/user/CeUserSessionTest.java @@ -19,21 +19,20 @@ */ package org.sonar.ce.user; -import com.google.common.base.Predicate; import com.tngtech.java.junit.dataprovider.DataProvider; import com.tngtech.java.junit.dataprovider.DataProviderRunner; import com.tngtech.java.junit.dataprovider.UseDataProvider; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; -import static com.google.common.collect.FluentIterable.from; -import static java.util.Arrays.asList; import static org.sonar.test.ExceptionCauseMatcher.hasType; @RunWith(DataProviderRunner.class) @@ -45,8 +44,9 @@ public class CeUserSessionTest { @DataProvider public static Object[][] ceUserSessionPublicMethods() { - List declaredMethods = from(asList(CeUserSession.class.getDeclaredMethods())) - .filter(PublicMethodPredicate.INSTANCE).toList(); + List declaredMethods = Arrays.stream(CeUserSession.class.getDeclaredMethods()) + .filter(m -> Modifier.isPublic(m.getModifiers())) + .collect(Collectors.toList()); Object[][] res = new Object[declaredMethods.size()][1]; int i = 0; for (Method declaredMethod : declaredMethods) { @@ -82,16 +82,6 @@ public class CeUserSessionTest { expectedException.expect(InvocationTargetException.class); expectedException.expectCause( hasType(UnsupportedOperationException.class) - .andMessage("UserSession must not be used from within the Compute Engine") - ); - } - - private enum PublicMethodPredicate implements Predicate { - INSTANCE; - - @Override - public boolean apply(Method input) { - return Modifier.isPublic(input.getModifiers()); - } + .andMessage("UserSession must not be used from within the Compute Engine")); } } -- cgit v1.2.3