diff --git a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java
index 94662b878e..4ad23d3fa7 100644
--- a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java
+++ b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java
@@ -35,7 +35,6 @@ package sonia.scm.security;
//~--- non-JDK imports --------------------------------------------------------
-import com.google.common.base.Joiner;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
@@ -180,7 +179,7 @@ public class AuthorizationCollector
}
else
{
- logger.debug("invalidate cache of user {}, because of a user event", username);
+ logger.debug("invalidate cache of user {}, because of user {} event", username, event.getEventType());
invalidateUserCache(username);
}
}
@@ -231,14 +230,14 @@ public class AuthorizationCollector
else
{
logger.debug(
- "cache of repository {} is not invalidated, because non relevant fields have changed",
+ "cache is not invalidated, because non relevant field of repository {} has changed",
repository.getName()
);
}
}
else
{
- logger.debug("clear cache, because repository {} has changed", repository.getName());
+ logger.debug("clear cache, received {} event of repository {}", event.getEventType(), repository.getName());
cache.clear();
}
}
@@ -271,7 +270,7 @@ public class AuthorizationCollector
StoredAssignedPermission permission = event.getPermission();
if (permission.isGroupPermission())
{
- logger.debug("clears the whole cache, because global group permission {} has changed", permission.getId());
+ logger.debug("clear cache, because global group permission {} has changed", permission.getId());
cache.clear();
}
else
@@ -312,14 +311,14 @@ public class AuthorizationCollector
else
{
logger.debug(
- "cache of group {} is not invalidated, because non relevant fields have changed",
+ "cache is not invalidated, because non relevant field of group {} has changed",
group.getId()
);
}
}
else
{
- logger.debug("clear cache, because group {} has changed", group.getId());
+ logger.debug("clear cache, received group event {} for group {}", event.getEventType(), group.getId());
cache.clear();
}
}
@@ -363,36 +362,9 @@ public class AuthorizationCollector
{
logger.trace("retrieve AuthorizationInfo for user {} from cache", user.getName());
}
-
- if (logger.isTraceEnabled()){
- logger.trace(createAuthorizationSummary(user, groupNames, info));
- }
return info;
}
-
- private String createAuthorizationSummary(User user, GroupNames groups, AuthorizationInfo authzInfo)
- {
- StringBuilder buffer = new StringBuilder("authorization summary: ");
- buffer.append(SEPARATOR).append("username : ").append(user.getName());
- buffer.append(SEPARATOR).append("groups : ");
- append(buffer, groups);
- buffer.append(SEPARATOR).append("roles : ");
- append(buffer, authzInfo.getRoles());
- buffer.append(SEPARATOR).append("permissions:");
- append(buffer, authzInfo.getStringPermissions());
- append(buffer, authzInfo.getObjectPermissions());
- return buffer.toString();
- }
-
- private void append(StringBuilder buffer, Iterable> iterable){
- if (iterable != null){
- for ( Object item : iterable )
- {
- buffer.append(SEPARATOR).append(" - ").append(item);
- }
- }
- }
/**
* Method description
@@ -549,9 +521,36 @@ public class AuthorizationCollector
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roles);
info.addObjectPermissions(permissions);
-
+
+ if (logger.isTraceEnabled()){
+ logger.trace(createAuthorizationSummary(user, groups, info));
+ }
+
return info;
}
+
+ private String createAuthorizationSummary(User user, GroupNames groups, AuthorizationInfo authzInfo)
+ {
+ StringBuilder buffer = new StringBuilder("authorization summary: ");
+ buffer.append(SEPARATOR).append("username : ").append(user.getName());
+ buffer.append(SEPARATOR).append("groups : ");
+ append(buffer, groups);
+ buffer.append(SEPARATOR).append("roles : ");
+ append(buffer, authzInfo.getRoles());
+ buffer.append(SEPARATOR).append("permissions:");
+ append(buffer, authzInfo.getStringPermissions());
+ append(buffer, authzInfo.getObjectPermissions());
+ return buffer.toString();
+ }
+
+ private void append(StringBuilder buffer, Iterable> iterable){
+ if (iterable != null){
+ for ( Object item : iterable )
+ {
+ buffer.append(SEPARATOR).append(" - ").append(item);
+ }
+ }
+ }
//~--- get methods ----------------------------------------------------------
diff --git a/scm-webapp/src/main/resources/logback.default.xml b/scm-webapp/src/main/resources/logback.default.xml
index b384437c72..3550607db6 100644
--- a/scm-webapp/src/main/resources/logback.default.xml
+++ b/scm-webapp/src/main/resources/logback.default.xml
@@ -54,6 +54,7 @@
+
diff --git a/scm-webapp/src/test/java/sonia/scm/security/AuthorizationCollectorTest.java b/scm-webapp/src/test/java/sonia/scm/security/AuthorizationCollectorTest.java
index cfa18960c5..269f39f833 100644
--- a/scm-webapp/src/test/java/sonia/scm/security/AuthorizationCollectorTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/security/AuthorizationCollectorTest.java
@@ -223,6 +223,18 @@ public class AuthorizationCollectorTest {
repositoryModified.setPermissions(Lists.newArrayList(new sonia.scm.repository.Permission("test123")));
collector.onEvent(new RepositoryModificationEvent(repositoryModified, repository, HandlerEvent.CREATE));
verify(cache).clear();
+
+ repositoryModified.setPermissions(
+ Lists.newArrayList(new sonia.scm.repository.Permission("test", PermissionType.READ, true))
+ );
+ collector.onEvent(new RepositoryModificationEvent(repositoryModified, repository, HandlerEvent.CREATE));
+ verify(cache, times(2)).clear();
+
+ repositoryModified.setPermissions(
+ Lists.newArrayList(new sonia.scm.repository.Permission("test", PermissionType.WRITE))
+ );
+ collector.onEvent(new RepositoryModificationEvent(repositoryModified, repository, HandlerEvent.CREATE));
+ verify(cache, times(3)).clear();
}
/**