diff --git a/maven/pom.xml b/maven/pom.xml
index 1268acc7e4..cf788a2471 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -6,13 +6,13 @@
sonia.scm
scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.maven
scm-maven-plugins
pom
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-maven-plugins
diff --git a/maven/scm-maven-plugin/pom.xml b/maven/scm-maven-plugin/pom.xml
index 9a818023da..4f376e411c 100644
--- a/maven/scm-maven-plugin/pom.xml
+++ b/maven/scm-maven-plugin/pom.xml
@@ -6,12 +6,12 @@
scm-maven-plugins
sonia.scm.maven
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.maven
scm-maven-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
maven-plugin
scm-maven-plugin
diff --git a/maven/scm-plugin-archetype/pom.xml b/maven/scm-plugin-archetype/pom.xml
index 98d3ab5439..0a247d2cfb 100644
--- a/maven/scm-plugin-archetype/pom.xml
+++ b/maven/scm-plugin-archetype/pom.xml
@@ -6,12 +6,12 @@
scm-maven-plugins
sonia.scm.maven
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.maven
scm-plugin-archetype
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-plugin-archetype
diff --git a/pom.xml b/pom.xml
index d572cd1fa3..beedafee1e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
sonia.scm
scm
pom
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
The easiest way to share your Git, Mercurial
and Subversion repositories over http.
diff --git a/scm-clients/pom.xml b/scm-clients/pom.xml
index 143ae58fdf..e946a2fc8f 100644
--- a/scm-clients/pom.xml
+++ b/scm-clients/pom.xml
@@ -6,13 +6,13 @@
sonia.scm
scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.clients
scm-clients
pom
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-clients
@@ -32,7 +32,7 @@
scm-core
sonia.scm
jar
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
shiro-core
diff --git a/scm-clients/scm-cli-client/pom.xml b/scm-clients/scm-cli-client/pom.xml
index 72f83e1d82..aa3d6a807b 100644
--- a/scm-clients/scm-cli-client/pom.xml
+++ b/scm-clients/scm-cli-client/pom.xml
@@ -6,12 +6,12 @@
scm-clients
sonia.scm.clients
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.clients
scm-cli-client
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-cli-client
@@ -34,7 +34,7 @@
sonia.scm.clients
scm-client-impl
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
diff --git a/scm-clients/scm-client-api/pom.xml b/scm-clients/scm-client-api/pom.xml
index babe71c9bc..3285997063 100644
--- a/scm-clients/scm-client-api/pom.xml
+++ b/scm-clients/scm-client-api/pom.xml
@@ -6,13 +6,13 @@
sonia.scm.clients
scm-clients
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.clients
scm-client-api
jar
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-client-api
diff --git a/scm-clients/scm-client-impl/pom.xml b/scm-clients/scm-client-impl/pom.xml
index 911a962f7a..0173942ed2 100644
--- a/scm-clients/scm-client-impl/pom.xml
+++ b/scm-clients/scm-client-impl/pom.xml
@@ -6,13 +6,13 @@
sonia.scm.clients
scm-clients
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.clients
scm-client-impl
jar
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-client-impl
@@ -36,7 +36,7 @@
sonia.scm.clients
scm-client-api
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
@@ -70,7 +70,7 @@
sonia.scm
scm-test
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
test
diff --git a/scm-core/pom.xml b/scm-core/pom.xml
index a3f56f355a..5ee1f110ab 100644
--- a/scm-core/pom.xml
+++ b/scm-core/pom.xml
@@ -6,12 +6,12 @@
scm
sonia.scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-core
diff --git a/scm-core/src/main/java/sonia/scm/repository/Permission.java b/scm-core/src/main/java/sonia/scm/repository/Permission.java
index 60c6628d61..b5de810f75 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Permission.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Permission.java
@@ -136,8 +136,9 @@ public class Permission implements PermissionObject, Serializable
final Permission other = (Permission) obj;
- return Objects.equal(name, other.name) && Objects.equal(type, other.type)
- && Objects.equal(groupPermission, groupPermission);
+ return Objects.equal(name, other.name)
+ && Objects.equal(type, other.type)
+ && Objects.equal(groupPermission, other.groupPermission);
}
/**
diff --git a/scm-dao-orientdb/pom.xml b/scm-dao-orientdb/pom.xml
index b2345d6c8d..5b54b2361e 100644
--- a/scm-dao-orientdb/pom.xml
+++ b/scm-dao-orientdb/pom.xml
@@ -6,12 +6,12 @@
sonia.scm
scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-dao-orientdb
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-dao-orientdb
@@ -26,7 +26,7 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
@@ -52,7 +52,7 @@
sonia.scm
scm-test
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
test
diff --git a/scm-dao-xml/pom.xml b/scm-dao-xml/pom.xml
index 5e61796443..009b20f559 100644
--- a/scm-dao-xml/pom.xml
+++ b/scm-dao-xml/pom.xml
@@ -6,12 +6,12 @@
sonia.scm
scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-dao-xml
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-dao-xml
@@ -26,7 +26,7 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
@@ -34,7 +34,7 @@
sonia.scm
scm-test
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
test
diff --git a/scm-plugin-backend/pom.xml b/scm-plugin-backend/pom.xml
index 788a0334fc..9f9024def5 100644
--- a/scm-plugin-backend/pom.xml
+++ b/scm-plugin-backend/pom.xml
@@ -6,13 +6,13 @@
scm
sonia.scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-plugin-backend
war
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
${project.artifactId}
@@ -62,7 +62,7 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
diff --git a/scm-plugins/pom.xml b/scm-plugins/pom.xml
index 24150b2da9..35c64fb10c 100644
--- a/scm-plugins/pom.xml
+++ b/scm-plugins/pom.xml
@@ -6,13 +6,13 @@
sonia.scm
scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.plugins
scm-plugins
pom
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-plugins
@@ -26,7 +26,7 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
@@ -59,7 +59,7 @@
sonia.scm.maven
scm-maven-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
process-resources
diff --git a/scm-plugins/scm-git-plugin/pom.xml b/scm-plugins/scm-git-plugin/pom.xml
index 2d5520a958..82515c13cd 100644
--- a/scm-plugins/scm-git-plugin/pom.xml
+++ b/scm-plugins/scm-git-plugin/pom.xml
@@ -6,12 +6,12 @@
scm-plugins
sonia.scm.plugins
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.plugins
scm-git-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-git-plugin
https://bitbucket.org/sdorra/scm-manager
Plugin for the version control system Git
@@ -48,7 +48,7 @@
sonia.scm
scm-test
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
test
diff --git a/scm-plugins/scm-hg-plugin/pom.xml b/scm-plugins/scm-hg-plugin/pom.xml
index 6003a7ba47..3a2611d6da 100644
--- a/scm-plugins/scm-hg-plugin/pom.xml
+++ b/scm-plugins/scm-hg-plugin/pom.xml
@@ -6,12 +6,12 @@
sonia.scm.plugins
scm-plugins
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.plugins
scm-hg-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-hg-plugin
https://bitbucket.org/sdorra/scm-manager
Plugin for the version control system Mercurial
@@ -42,7 +42,7 @@
sonia.scm
scm-test
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
test
diff --git a/scm-plugins/scm-svn-plugin/pom.xml b/scm-plugins/scm-svn-plugin/pom.xml
index 59efbfd272..3de56a1a92 100644
--- a/scm-plugins/scm-svn-plugin/pom.xml
+++ b/scm-plugins/scm-svn-plugin/pom.xml
@@ -6,12 +6,12 @@
scm-plugins
sonia.scm.plugins
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.plugins
scm-svn-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-svn-plugin
https://bitbucket.org/sdorra/scm-manager
Plugin for the version control system Subversion
@@ -48,7 +48,7 @@
sonia.scm
scm-test
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
test
diff --git a/scm-samples/pom.xml b/scm-samples/pom.xml
index af9c057725..b647b307af 100644
--- a/scm-samples/pom.xml
+++ b/scm-samples/pom.xml
@@ -6,13 +6,13 @@
sonia.scm
scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.samples
scm-samples
pom
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-samples
diff --git a/scm-samples/scm-sample-auth/pom.xml b/scm-samples/scm-sample-auth/pom.xml
index 250bc1e5d7..53f30cc74d 100644
--- a/scm-samples/scm-sample-auth/pom.xml
+++ b/scm-samples/scm-sample-auth/pom.xml
@@ -6,12 +6,12 @@
scm-samples
sonia.scm.samples
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.sample
scm-sample-auth
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-sample-auth
Sample Authentication Plugin
https://bitbucket.org/sdorra/scm-manager
@@ -28,7 +28,7 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
diff --git a/scm-samples/scm-sample-hello/pom.xml b/scm-samples/scm-sample-hello/pom.xml
index 7592cb18fd..04ff972b50 100644
--- a/scm-samples/scm-sample-hello/pom.xml
+++ b/scm-samples/scm-sample-hello/pom.xml
@@ -6,12 +6,12 @@
scm-samples
sonia.scm.samples
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.sample
scm-sample-hello
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-sample-hello
A simple hello world plugin
https://bitbucket.org/sdorra/scm-manager
@@ -28,7 +28,7 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
diff --git a/scm-server/pom.xml b/scm-server/pom.xml
index 1a672a31cf..df5ec69a0f 100644
--- a/scm-server/pom.xml
+++ b/scm-server/pom.xml
@@ -6,12 +6,12 @@
scm
sonia.scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-server
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-server
jar
diff --git a/scm-test/pom.xml b/scm-test/pom.xml
index fe95e257a7..4d700407cf 100644
--- a/scm-test/pom.xml
+++ b/scm-test/pom.xml
@@ -6,12 +6,12 @@
scm
sonia.scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-test
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-test
@@ -25,7 +25,7 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml
index c7218797eb..9a7ab485a8 100644
--- a/scm-webapp/pom.xml
+++ b/scm-webapp/pom.xml
@@ -6,13 +6,13 @@
sonia.scm
scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-webapp
war
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-webapp
@@ -38,31 +38,31 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-dao-xml
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.plugins
scm-hg-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.plugins
scm-svn-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.plugins
scm-git-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
@@ -286,7 +286,7 @@
sonia.scm
scm-test
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
test
@@ -299,7 +299,7 @@
sonia.scm.plugins
scm-git-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
tests
test
@@ -307,7 +307,7 @@
sonia.scm.plugins
scm-hg-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
tests
test
@@ -315,7 +315,7 @@
sonia.scm.plugins
scm-svn-plugin
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
tests
test
@@ -547,7 +547,7 @@
sonia.scm
scm-dao-orientdb
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
diff --git a/scm-webapp/src/main/java/sonia/scm/filter/MDCFilter.java b/scm-webapp/src/main/java/sonia/scm/filter/MDCFilter.java
index 5c14269ffb..f16e7ca548 100644
--- a/scm-webapp/src/main/java/sonia/scm/filter/MDCFilter.java
+++ b/scm-webapp/src/main/java/sonia/scm/filter/MDCFilter.java
@@ -72,6 +72,10 @@ public class MDCFilter extends HttpFilter
/** url of the current request */
@VisibleForTesting
static final String MDC_REQUEST_URI = "request_uri";
+
+ /** request method */
+ @VisibleForTesting
+ static final String MDC_REQUEST_METHOD = "request_method";
/** Field description */
@VisibleForTesting
@@ -98,6 +102,7 @@ public class MDCFilter extends HttpFilter
MDC.put(MDC_USERNAME, getUsername());
MDC.put(MDC_CLIEN_IP, request.getRemoteAddr());
MDC.put(MDC_CLIEN_HOST, request.getRemoteHost());
+ MDC.put(MDC_REQUEST_METHOD, request.getMethod());
MDC.put(MDC_REQUEST_URI, request.getRequestURI());
try
@@ -109,6 +114,7 @@ public class MDCFilter extends HttpFilter
MDC.remove(MDC_USERNAME);
MDC.remove(MDC_CLIEN_IP);
MDC.remove(MDC_CLIEN_HOST);
+ MDC.remove(MDC_REQUEST_METHOD);
MDC.remove(MDC_REQUEST_URI);
}
}
diff --git a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java
index 672a8d7a46..bbe4f80115 100644
--- a/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java
+++ b/scm-webapp/src/main/java/sonia/scm/repository/DefaultRepositoryManager.java
@@ -918,7 +918,8 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
if (!isPermitted(repository, PermissionType.OWNER))
{
throw new ScmSecurityException(
- "owner permission is required, access denied");
+ "owner permission is required, owner access to repository " + repository.getName() + " denied"
+ );
}
}
@@ -933,7 +934,8 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
if (!isReader(repository))
{
throw new ScmSecurityException(
- "reader permission is required, access denied");
+ "reader permission is required, access to repository " + repository.getName() + " denied"
+ );
}
}
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 d7db55ac59..315f19d1e5 100644
--- a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java
+++ b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java
@@ -85,6 +85,9 @@ import sonia.scm.user.UserModificationEvent;
public class AuthorizationCollector
{
+ // TODO move to util class
+ private static final String SEPARATOR = System.getProperty("line.separator", "\n");
+
/** Field description */
private static final String CACHE_NAME = "sonia.cache.authorizing";
@@ -166,15 +169,17 @@ public class AuthorizationCollector
User beforeModification = ((UserModificationEvent) event).getItemBeforeModification();
if (shouldCacheBeCleared(user, beforeModification))
{
+ logger.debug("invalidate cache of user {}, because of a permission relevant field has changed", username);
invalidateUserCache(username);
}
else
{
- logger.debug("cache of user {} is not invalidated, because admin and active flag has not changed", username);
+ logger.debug("cache of user {} is not invalidated, because no permission relevant field has changed", username);
}
}
else
{
+ logger.debug("invalidate cache of user {}, because of user {} event", username, event.getEventType());
invalidateUserCache(username);
}
}
@@ -187,7 +192,6 @@ public class AuthorizationCollector
private void invalidateUserCache(final String username)
{
- logger.debug("invalidate cache of user {}, because of a event which could change the permissions", username);
cache.removeAll(new Filter()
{
@Override
@@ -214,11 +218,7 @@ public class AuthorizationCollector
if (event.getEventType().isPost())
{
Repository repository = event.getItem();
- if (logger.isDebugEnabled())
- {
- logger.debug("clear cache, because repository {} has changed", repository.getName());
- }
-
+
if (event instanceof RepositoryModificationEvent)
{
Repository beforeModification = ((RepositoryModificationEvent) event).getItemBeforeModification();
@@ -230,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();
}
}
@@ -262,20 +262,18 @@ public class AuthorizationCollector
{
if (event.getEventType().isPost())
{
- if (logger.isDebugEnabled())
- {
- logger.debug("clear cache, because permission {} has changed",
- event.getPermission().getId());
- }
-
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
{
+ logger.debug(
+ "clear cache of user {}, because permission {} has changed",
+ permission.getName(), event.getPermission().getId()
+ );
invalidateUserCache(permission.getName());
}
}
@@ -308,14 +306,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();
}
}
@@ -351,18 +349,13 @@ public class AuthorizationCollector
if (info == null)
{
- if (logger.isTraceEnabled())
- {
- logger.trace("collect AuthorizationInfo for user {}", user.getName());
- }
-
+ logger.trace("collect AuthorizationInfo for user {}", user.getName());
info = createAuthorizationInfo(user, groupNames);
cache.put(cacheKey, info);
}
else if (logger.isTraceEnabled())
{
- logger.trace("retrieve AuthorizationInfo for user {} from cache",
- user.getName());
+ logger.trace("retrieve AuthorizationInfo for user {} from cache", user.getName());
}
return info;
@@ -522,11 +515,37 @@ 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 290a04a9d1..3550607db6 100644
--- a/scm-webapp/src/main/resources/logback.default.xml
+++ b/scm-webapp/src/main/resources/logback.default.xml
@@ -52,6 +52,10 @@
+
+
+
+
diff --git a/scm-webapp/src/main/webapp/resources/js/panel/sonia.panel.syntaxhighlighterpanel.js b/scm-webapp/src/main/webapp/resources/js/panel/sonia.panel.syntaxhighlighterpanel.js
index 686df63cbb..fab21ac806 100644
--- a/scm-webapp/src/main/webapp/resources/js/panel/sonia.panel.syntaxhighlighterpanel.js
+++ b/scm-webapp/src/main/webapp/resources/js/panel/sonia.panel.syntaxhighlighterpanel.js
@@ -41,6 +41,7 @@ Sonia.panel.SyntaxHighlighterPanel = Ext.extend(Ext.Panel, {
fileName: 'shBrushAppleScript.js'
},{
name: 'Bash/shell',
+ brush: 'shell',
aliases: ['sh', 'bash', 'shell'],
fileName: 'shBrushBash.js'
},{
diff --git a/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java b/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java
index b5e1753c52..010c9bc1cf 100644
--- a/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java
+++ b/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java
@@ -87,6 +87,7 @@ public class MDCFilterTest extends AbstractTestBase {
when(request.getRequestURI()).thenReturn("api/v1/repositories");
when(request.getRemoteAddr()).thenReturn("127.0.0.1");
when(request.getRemoteHost()).thenReturn("localhost");
+ when(request.getMethod()).thenReturn("GET");
MDCCapturingFilterChain chain = new MDCCapturingFilterChain();
filter.doFilter(request, response, chain);
@@ -96,6 +97,7 @@ public class MDCFilterTest extends AbstractTestBase {
assertEquals("api/v1/repositories", chain.ctx.get(MDCFilter.MDC_REQUEST_URI));
assertEquals("127.0.0.1", chain.ctx.get(MDCFilter.MDC_CLIEN_IP));
assertEquals("localhost", chain.ctx.get(MDCFilter.MDC_CLIEN_HOST));
+ assertEquals("GET", chain.ctx.get(MDCFilter.MDC_REQUEST_METHOD));
}
/**
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();
}
/**
diff --git a/support/pom.xml b/support/pom.xml
index d2b787d62c..f8a2a61627 100644
--- a/support/pom.xml
+++ b/support/pom.xml
@@ -6,13 +6,13 @@
sonia.scm
scm
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm.support
scm-support
pom
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
scm-support
diff --git a/support/scm-support-btrace/pom.xml b/support/scm-support-btrace/pom.xml
index 9f8264251f..aa4caaf32c 100644
--- a/support/scm-support-btrace/pom.xml
+++ b/support/scm-support-btrace/pom.xml
@@ -4,12 +4,12 @@
sonia.scm.support
scm-support
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
sonia.scm
scm-support-btrace
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT
jar
scm-support-btrace
@@ -18,7 +18,7 @@
sonia.scm
scm-core
- 1.48-SNAPSHOT
+ 1.49-SNAPSHOT