mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 06:55:47 +01:00
improve modification handler events by sending old and new items to eventbus
This commit is contained in:
@@ -43,7 +43,7 @@ import com.google.inject.Singleton;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.HandlerEvent;
|
||||
import sonia.scm.HandlerEventType;
|
||||
import sonia.scm.SCMContextProvider;
|
||||
import sonia.scm.TransformFilter;
|
||||
import sonia.scm.search.SearchRequest;
|
||||
@@ -138,9 +138,9 @@ public class DefaultGroupManager extends AbstractGroupManager
|
||||
|
||||
removeDuplicateMembers(group);
|
||||
group.setCreationDate(System.currentTimeMillis());
|
||||
fireEvent(group, HandlerEvent.BEFORE_CREATE);
|
||||
fireEvent(HandlerEventType.BEFORE_CREATE, group);
|
||||
groupDAO.add(group);
|
||||
fireEvent(group, HandlerEvent.CREATE);
|
||||
fireEvent(HandlerEventType.CREATE, group);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,9 +167,9 @@ public class DefaultGroupManager extends AbstractGroupManager
|
||||
|
||||
if (groupDAO.contains(name))
|
||||
{
|
||||
fireEvent(group, HandlerEvent.BEFORE_DELETE);
|
||||
fireEvent(HandlerEventType.BEFORE_DELETE, group);
|
||||
groupDAO.delete(group);
|
||||
fireEvent(group, HandlerEvent.DELETE);
|
||||
fireEvent(HandlerEventType.DELETE, group);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -184,9 +184,7 @@ public class DefaultGroupManager extends AbstractGroupManager
|
||||
* @param context
|
||||
*/
|
||||
@Override
|
||||
public void init(SCMContextProvider context)
|
||||
{
|
||||
}
|
||||
public void init(SCMContextProvider context) {}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
@@ -210,13 +208,15 @@ public class DefaultGroupManager extends AbstractGroupManager
|
||||
|
||||
String name = group.getName();
|
||||
|
||||
if (groupDAO.contains(name))
|
||||
Group oldGroup = groupDAO.get(name);
|
||||
|
||||
if (oldGroup != null)
|
||||
{
|
||||
removeDuplicateMembers(group);
|
||||
group.setLastModified(System.currentTimeMillis());
|
||||
fireEvent(group, HandlerEvent.BEFORE_MODIFY);
|
||||
fireEvent(HandlerEventType.BEFORE_MODIFY, group, oldGroup);
|
||||
groupDAO.modify(group);
|
||||
fireEvent(group, HandlerEvent.MODIFY);
|
||||
fireEvent(HandlerEventType.MODIFY, group, oldGroup);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -50,7 +50,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.ArgumentIsInvalidException;
|
||||
import sonia.scm.ConfigurationException;
|
||||
import sonia.scm.HandlerEvent;
|
||||
import sonia.scm.HandlerEventType;
|
||||
import sonia.scm.SCMContextProvider;
|
||||
import sonia.scm.Type;
|
||||
import sonia.scm.config.ScmConfiguration;
|
||||
@@ -105,7 +105,6 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
||||
* @param keyGenerator
|
||||
* @param repositoryDAO
|
||||
* @param handlerSet
|
||||
* @param preProcessorUtil
|
||||
*/
|
||||
@Inject
|
||||
public DefaultRepositoryManager(ScmConfiguration configuration,
|
||||
@@ -187,9 +186,9 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
||||
getHandler(repository).create(repository);
|
||||
}
|
||||
|
||||
fireEvent(repository, HandlerEvent.BEFORE_CREATE);
|
||||
fireEvent(HandlerEventType.BEFORE_CREATE, repository);
|
||||
repositoryDAO.add(repository);
|
||||
fireEvent(repository, HandlerEvent.CREATE);
|
||||
fireEvent(HandlerEventType.CREATE, repository);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -237,19 +236,18 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
||||
|
||||
if (repositoryDAO.contains(repository))
|
||||
{
|
||||
fireEvent(repository, HandlerEvent.BEFORE_DELETE);
|
||||
fireEvent(HandlerEventType.BEFORE_DELETE, repository);
|
||||
getHandler(repository).delete(repository);
|
||||
repositoryDAO.delete(repository);
|
||||
fireEvent(HandlerEventType.DELETE, repository);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RepositoryNotFoundException(
|
||||
"repository ".concat(repository.getName()).concat(" not found"));
|
||||
}
|
||||
|
||||
fireEvent(repository, HandlerEvent.DELETE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
@@ -273,9 +271,7 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
||||
* @param context
|
||||
*/
|
||||
@Override
|
||||
public void init(SCMContextProvider context)
|
||||
{
|
||||
}
|
||||
public void init(SCMContextProvider context) {}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
@@ -298,24 +294,23 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
||||
|
||||
AssertUtil.assertIsValid(repository);
|
||||
|
||||
Repository notModifiedRepository = repositoryDAO.get(repository.getType(),
|
||||
repository.getName());
|
||||
Repository oldRepository = repositoryDAO.get(repository.getType(),
|
||||
repository.getName());
|
||||
|
||||
if (notModifiedRepository != null)
|
||||
if (oldRepository != null)
|
||||
{
|
||||
assertIsOwner(notModifiedRepository);
|
||||
fireEvent(repository, HandlerEvent.BEFORE_MODIFY);
|
||||
assertIsOwner(oldRepository);
|
||||
fireEvent(HandlerEventType.BEFORE_MODIFY, repository, oldRepository);
|
||||
repository.setLastModified(System.currentTimeMillis());
|
||||
getHandler(repository).modify(repository);
|
||||
repositoryDAO.modify(repository);
|
||||
fireEvent(HandlerEventType.MODIFY, repository, oldRepository);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RepositoryNotFoundException(
|
||||
"repository ".concat(repository.getName()).concat(" not found"));
|
||||
}
|
||||
|
||||
fireEvent(repository, HandlerEvent.MODIFY);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -511,7 +506,7 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager
|
||||
|
||||
return validTypes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
|
||||
@@ -48,7 +48,7 @@ import org.apache.shiro.SecurityUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.HandlerEvent;
|
||||
import sonia.scm.HandlerEventType;
|
||||
import sonia.scm.event.ScmEventBus;
|
||||
import sonia.scm.group.GroupEvent;
|
||||
import sonia.scm.store.ConfigurationEntryStore;
|
||||
@@ -132,7 +132,7 @@ public class DefaultSecuritySystem implements SecuritySystem
|
||||
|
||||
//J-
|
||||
ScmEventBus.getInstance().post(
|
||||
new StoredAssignedPermissionEvent(HandlerEvent.CREATE, sap)
|
||||
new StoredAssignedPermissionEvent(HandlerEventType.CREATE, sap)
|
||||
);
|
||||
//J+
|
||||
|
||||
@@ -152,7 +152,7 @@ public class DefaultSecuritySystem implements SecuritySystem
|
||||
store.remove(permission.getId());
|
||||
//J-
|
||||
ScmEventBus.getInstance().post(
|
||||
new StoredAssignedPermissionEvent(HandlerEvent.CREATE, permission)
|
||||
new StoredAssignedPermissionEvent(HandlerEventType.CREATE, permission)
|
||||
);
|
||||
//J+
|
||||
}
|
||||
@@ -185,7 +185,7 @@ public class DefaultSecuritySystem implements SecuritySystem
|
||||
@Subscribe
|
||||
public void handleEvent(final UserEvent event)
|
||||
{
|
||||
if (event.getEventType() == HandlerEvent.DELETE)
|
||||
if (event.getEventType() == HandlerEventType.DELETE)
|
||||
{
|
||||
deletePermissions(new Predicate<AssignedPermission>()
|
||||
{
|
||||
@@ -209,7 +209,7 @@ public class DefaultSecuritySystem implements SecuritySystem
|
||||
@Subscribe
|
||||
public void handleEvent(final GroupEvent event)
|
||||
{
|
||||
if (event.getEventType() == HandlerEvent.DELETE)
|
||||
if (event.getEventType() == HandlerEventType.DELETE)
|
||||
{
|
||||
deletePermissions(new Predicate<AssignedPermission>()
|
||||
{
|
||||
@@ -243,7 +243,7 @@ public class DefaultSecuritySystem implements SecuritySystem
|
||||
|
||||
//J-
|
||||
ScmEventBus.getInstance().post(
|
||||
new StoredAssignedPermissionEvent(HandlerEvent.CREATE, permission)
|
||||
new StoredAssignedPermissionEvent(HandlerEventType.CREATE, permission)
|
||||
);
|
||||
//J+
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ import org.apache.shiro.subject.SimplePrincipalCollection;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.HandlerEvent;
|
||||
import sonia.scm.HandlerEventType;
|
||||
import sonia.scm.config.ScmConfiguration;
|
||||
import sonia.scm.group.Group;
|
||||
import sonia.scm.group.GroupManager;
|
||||
@@ -121,9 +121,8 @@ public class ScmRealm extends AuthorizingRealm
|
||||
*/
|
||||
@Inject
|
||||
public ScmRealm(ScmConfiguration configuration,
|
||||
LoginAttemptHandler loginAttemptHandler,
|
||||
AuthorizationCollector collector,UserManager userManager,
|
||||
GroupManager groupManager, UserDAO userDAO,
|
||||
LoginAttemptHandler loginAttemptHandler, AuthorizationCollector collector,
|
||||
UserManager userManager, GroupManager groupManager, UserDAO userDAO,
|
||||
AuthenticationManager authenticator, RepositoryManager manager,
|
||||
Provider<HttpServletRequest> requestProvider,
|
||||
Provider<HttpServletResponse> responseProvider)
|
||||
@@ -149,8 +148,6 @@ public class ScmRealm extends AuthorizingRealm
|
||||
// set components
|
||||
setPermissionResolver(new RepositoryPermissionResolver());
|
||||
}
|
||||
|
||||
private final LoginAttemptHandler loginAttemptHandler;
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
|
||||
@@ -174,7 +171,7 @@ public class ScmRealm extends AuthorizingRealm
|
||||
{
|
||||
throw new UnsupportedTokenException("ScmAuthenticationToken is required");
|
||||
}
|
||||
|
||||
|
||||
loginAttemptHandler.beforeAuthentication(authToken);
|
||||
|
||||
UsernamePasswordToken token = (UsernamePasswordToken) authToken;
|
||||
@@ -198,6 +195,7 @@ public class ScmRealm extends AuthorizingRealm
|
||||
else
|
||||
{
|
||||
loginAttemptHandler.onUnsuccessfulAuthentication(authToken, result);
|
||||
|
||||
throw new AccountException("authentication failed");
|
||||
}
|
||||
|
||||
@@ -257,9 +255,10 @@ public class ScmRealm extends AuthorizingRealm
|
||||
user.setCreationDate(System.currentTimeMillis());
|
||||
|
||||
// TODO find a better way
|
||||
UserEventHack.fireEvent(userManager, user, HandlerEvent.BEFORE_CREATE);
|
||||
UserEventHack.fireEvent(userManager, HandlerEventType.BEFORE_CREATE,
|
||||
user);
|
||||
userDAO.add(user);
|
||||
UserEventHack.fireEvent(userManager, user, HandlerEvent.CREATE);
|
||||
UserEventHack.fireEvent(userManager, HandlerEventType.CREATE, user);
|
||||
}
|
||||
else if (logger.isErrorEnabled())
|
||||
{
|
||||
@@ -547,6 +546,9 @@ public class ScmRealm extends AuthorizingRealm
|
||||
/** Field description */
|
||||
private final GroupManager groupManager;
|
||||
|
||||
/** Field description */
|
||||
private final LoginAttemptHandler loginAttemptHandler;
|
||||
|
||||
/** Field description */
|
||||
private final Provider<HttpServletRequest> requestProvider;
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ import org.apache.shiro.subject.Subject;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.HandlerEvent;
|
||||
import sonia.scm.HandlerEventType;
|
||||
import sonia.scm.SCMContextProvider;
|
||||
import sonia.scm.TransformFilter;
|
||||
import sonia.scm.search.SearchRequest;
|
||||
@@ -179,9 +179,9 @@ public class DefaultUserManager extends AbstractUserManager
|
||||
|
||||
AssertUtil.assertIsValid(user);
|
||||
user.setCreationDate(System.currentTimeMillis());
|
||||
fireEvent(user, HandlerEvent.BEFORE_CREATE);
|
||||
fireEvent(HandlerEventType.BEFORE_CREATE, user);
|
||||
userDAO.add(user);
|
||||
fireEvent(user, HandlerEvent.CREATE);
|
||||
fireEvent(HandlerEventType.CREATE, user);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -207,9 +207,9 @@ public class DefaultUserManager extends AbstractUserManager
|
||||
|
||||
if (userDAO.contains(name))
|
||||
{
|
||||
fireEvent(user, HandlerEvent.BEFORE_DELETE);
|
||||
fireEvent(HandlerEventType.BEFORE_DELETE, user);
|
||||
userDAO.delete(user);
|
||||
fireEvent(user, HandlerEvent.DELETE);
|
||||
fireEvent(HandlerEventType.DELETE, user);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -267,14 +267,16 @@ public class DefaultUserManager extends AbstractUserManager
|
||||
}
|
||||
|
||||
String name = user.getName();
|
||||
|
||||
User oldUser = userDAO.get(name);
|
||||
|
||||
if (userDAO.contains(name))
|
||||
if (oldUser != null)
|
||||
{
|
||||
AssertUtil.assertIsValid(user);
|
||||
user.setLastModified(System.currentTimeMillis());
|
||||
fireEvent(user, HandlerEvent.BEFORE_MODIFY);
|
||||
fireEvent(HandlerEventType.BEFORE_MODIFY, user, oldUser);
|
||||
userDAO.modify(user);
|
||||
fireEvent(user, HandlerEvent.MODIFY);
|
||||
fireEvent(HandlerEventType.MODIFY, user, oldUser);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -38,7 +38,7 @@ package sonia.scm.user;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.HandlerEvent;
|
||||
import sonia.scm.HandlerEventType;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -71,15 +71,15 @@ public final class UserEventHack
|
||||
* @param user
|
||||
* @param event
|
||||
*/
|
||||
public static void fireEvent(UserManager userManager, User user,
|
||||
HandlerEvent event)
|
||||
public static void fireEvent(UserManager userManager, HandlerEventType event,
|
||||
User user)
|
||||
{
|
||||
AbstractUserManager abstractUserManager =
|
||||
getAbstractUserManager(userManager);
|
||||
|
||||
if (abstractUserManager != null)
|
||||
{
|
||||
abstractUserManager.fireEvent(user, event);
|
||||
abstractUserManager.fireEvent(event, user);
|
||||
}
|
||||
else if (logger.isWarnEnabled())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user