mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 07:55:47 +01:00
enable injection for repository hooks
This commit is contained in:
@@ -108,6 +108,8 @@ public class BindingExtensionProcessor implements ExtensionProcessor
|
||||
Multibinder.newSetBinder(binder, ChangesetPreProcessor.class);
|
||||
Multibinder<ChangesetPreProcessorFactory> changesetPreProcessorFactoryBinder =
|
||||
Multibinder.newSetBinder(binder, ChangesetPreProcessorFactory.class);
|
||||
Multibinder<RepositoryHook> repositoryHookBinder =
|
||||
Multibinder.newSetBinder(binder, RepositoryHook.class);
|
||||
|
||||
// listeners
|
||||
Multibinder<RepositoryListener> repositoryListenerBinder =
|
||||
@@ -123,141 +125,128 @@ public class BindingExtensionProcessor implements ExtensionProcessor
|
||||
|
||||
for (Class extensionClass : extensions)
|
||||
{
|
||||
try
|
||||
if (RepositoryHandler.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (RepositoryHandler.class.isAssignableFrom(extensionClass))
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind RepositoryHandler {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
repositoryHandlers.addBinding().to(extensionClass);
|
||||
logger.info("bind RepositoryHandler {}", extensionClass.getName());
|
||||
}
|
||||
else if (EncryptionHandler.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
bind(binder, EncryptionHandler.class, extensionClass);
|
||||
}
|
||||
else if (AuthenticationHandler.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind AuthenticationHandler {}",
|
||||
extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
authenticators.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (GroupListener.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind GroupListener {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
groupListenerBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (UserListener.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind UserListener {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
userListenerBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (RepositoryListener.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind RepositoryListener {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
repositoryListenerBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (AuthenticationListener.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind AuthenticaitonListener {}",
|
||||
extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
authenticationListenerBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (ResourceHandler.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind ResourceHandler {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
resourceHandler.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (FileSystem.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind FileSystem {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
fileSystemClass = extensionClass;
|
||||
}
|
||||
else if (ChangesetPreProcessor.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind ChangesetPreProcessor {}",
|
||||
extensionClass.getName());
|
||||
}
|
||||
|
||||
changesetPreProcessorBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (ChangesetPreProcessorFactory.class.isAssignableFrom(
|
||||
extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind ChangesetPreProcessorFactory {}",
|
||||
extensionClass.getName());
|
||||
}
|
||||
|
||||
changesetPreProcessorFactoryBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (RepositoryHook.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind RepositoryHook {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
RepositoryHook hook = (RepositoryHook) extensionClass.newInstance();
|
||||
|
||||
hooks.add(hook);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
}
|
||||
binder.bind(extensionClass);
|
||||
repositoryHandlers.addBinding().to(extensionClass);
|
||||
}
|
||||
catch (IllegalAccessException ex)
|
||||
else if (EncryptionHandler.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
logger.error(ex.getMessage(), ex);
|
||||
bind(binder, EncryptionHandler.class, extensionClass);
|
||||
}
|
||||
catch (InstantiationException ex)
|
||||
else if (AuthenticationHandler.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
logger.error(ex.getMessage(), ex);
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind AuthenticationHandler {}",
|
||||
extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
authenticators.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (GroupListener.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind GroupListener {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
groupListenerBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (UserListener.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind UserListener {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
userListenerBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (RepositoryListener.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind RepositoryListener {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
repositoryListenerBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (AuthenticationListener.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind AuthenticaitonListener {}",
|
||||
extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
authenticationListenerBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (ResourceHandler.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind ResourceHandler {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
resourceHandler.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (FileSystem.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind FileSystem {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
fileSystemClass = extensionClass;
|
||||
}
|
||||
else if (ChangesetPreProcessor.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind ChangesetPreProcessor {}",
|
||||
extensionClass.getName());
|
||||
}
|
||||
|
||||
changesetPreProcessorBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (ChangesetPreProcessorFactory.class.isAssignableFrom(
|
||||
extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind ChangesetPreProcessorFactory {}",
|
||||
extensionClass.getName());
|
||||
}
|
||||
|
||||
changesetPreProcessorFactoryBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else if (RepositoryHook.class.isAssignableFrom(extensionClass))
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind RepositoryHook {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
repositoryHookBinder.addBinding().to(extensionClass);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
{
|
||||
logger.info("bind {}", extensionClass.getName());
|
||||
}
|
||||
|
||||
binder.bind(extensionClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,17 +113,20 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
|
||||
* @param storeFactory
|
||||
* @param handlerSet
|
||||
* @param repositoryListenersProvider
|
||||
* @param repositoryHooksProvider
|
||||
*/
|
||||
@Inject
|
||||
public XmlRepositoryManager(
|
||||
SCMContextProvider contextProvider,
|
||||
Provider<WebSecurityContext> securityContextProvider,
|
||||
StoreFactory storeFactory, Set<RepositoryHandler> handlerSet,
|
||||
Provider<Set<RepositoryListener>> repositoryListenersProvider)
|
||||
Provider<Set<RepositoryListener>> repositoryListenersProvider,
|
||||
Provider<Set<RepositoryHook>> repositoryHooksProvider)
|
||||
{
|
||||
this.securityContextProvider = securityContextProvider;
|
||||
this.store = storeFactory.getStore(XmlRepositoryDatabase.class, STORE_NAME);
|
||||
this.repositoryListenersProvider = repositoryListenersProvider;
|
||||
this.repositoryHooksProvider = repositoryHooksProvider;
|
||||
handlerMap = new HashMap<String, RepositoryHandler>();
|
||||
types = new HashSet<Type>();
|
||||
|
||||
@@ -299,6 +302,13 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
|
||||
{
|
||||
addListeners(listeners);
|
||||
}
|
||||
|
||||
Set<RepositoryHook> hooks = repositoryHooksProvider.get();
|
||||
|
||||
if (Util.isNotEmpty(hooks))
|
||||
{
|
||||
addHooks(hooks);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -775,6 +785,9 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
|
||||
/** Field description */
|
||||
private XmlRepositoryDatabase repositoryDB;
|
||||
|
||||
/** Field description */
|
||||
private Provider<Set<RepositoryHook>> repositoryHooksProvider;
|
||||
|
||||
/** Field description */
|
||||
private Provider<Set<RepositoryListener>> repositoryListenersProvider;
|
||||
|
||||
|
||||
@@ -76,8 +76,13 @@ public class XmlRepositoryManagerTest extends RepositoryManagerTestBase
|
||||
|
||||
when(listenerProvider.get()).thenReturn(new HashSet<RepositoryListener>());
|
||||
|
||||
Provider<Set<RepositoryHook>> hookProvider = mock(Provider.class);
|
||||
|
||||
when(hookProvider.get()).thenReturn(new HashSet<RepositoryHook>());
|
||||
|
||||
return new XmlRepositoryManager(contextProvider,
|
||||
MockUtil.getAdminSecurityContextProvider(),
|
||||
factory, handlerSet, listenerProvider);
|
||||
factory, handlerSet, listenerProvider,
|
||||
hookProvider);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user