mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 16:05:44 +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.newSetBinder(binder, ChangesetPreProcessor.class);
|
||||||
Multibinder<ChangesetPreProcessorFactory> changesetPreProcessorFactoryBinder =
|
Multibinder<ChangesetPreProcessorFactory> changesetPreProcessorFactoryBinder =
|
||||||
Multibinder.newSetBinder(binder, ChangesetPreProcessorFactory.class);
|
Multibinder.newSetBinder(binder, ChangesetPreProcessorFactory.class);
|
||||||
|
Multibinder<RepositoryHook> repositoryHookBinder =
|
||||||
|
Multibinder.newSetBinder(binder, RepositoryHook.class);
|
||||||
|
|
||||||
// listeners
|
// listeners
|
||||||
Multibinder<RepositoryListener> repositoryListenerBinder =
|
Multibinder<RepositoryListener> repositoryListenerBinder =
|
||||||
@@ -122,8 +124,6 @@ public class BindingExtensionProcessor implements ExtensionProcessor
|
|||||||
authenticators.addBinding().to(XmlAuthenticationHandler.class);
|
authenticators.addBinding().to(XmlAuthenticationHandler.class);
|
||||||
|
|
||||||
for (Class extensionClass : extensions)
|
for (Class extensionClass : extensions)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
if (RepositoryHandler.class.isAssignableFrom(extensionClass))
|
if (RepositoryHandler.class.isAssignableFrom(extensionClass))
|
||||||
{
|
{
|
||||||
@@ -237,9 +237,7 @@ public class BindingExtensionProcessor implements ExtensionProcessor
|
|||||||
logger.info("bind RepositoryHook {}", extensionClass.getName());
|
logger.info("bind RepositoryHook {}", extensionClass.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
RepositoryHook hook = (RepositoryHook) extensionClass.newInstance();
|
repositoryHookBinder.addBinding().to(extensionClass);
|
||||||
|
|
||||||
hooks.add(hook);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -251,15 +249,6 @@ public class BindingExtensionProcessor implements ExtensionProcessor
|
|||||||
binder.bind(extensionClass);
|
binder.bind(extensionClass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (IllegalAccessException ex)
|
|
||||||
{
|
|
||||||
logger.error(ex.getMessage(), ex);
|
|
||||||
}
|
|
||||||
catch (InstantiationException ex)
|
|
||||||
{
|
|
||||||
logger.error(ex.getMessage(), ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -113,17 +113,20 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
|
|||||||
* @param storeFactory
|
* @param storeFactory
|
||||||
* @param handlerSet
|
* @param handlerSet
|
||||||
* @param repositoryListenersProvider
|
* @param repositoryListenersProvider
|
||||||
|
* @param repositoryHooksProvider
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public XmlRepositoryManager(
|
public XmlRepositoryManager(
|
||||||
SCMContextProvider contextProvider,
|
SCMContextProvider contextProvider,
|
||||||
Provider<WebSecurityContext> securityContextProvider,
|
Provider<WebSecurityContext> securityContextProvider,
|
||||||
StoreFactory storeFactory, Set<RepositoryHandler> handlerSet,
|
StoreFactory storeFactory, Set<RepositoryHandler> handlerSet,
|
||||||
Provider<Set<RepositoryListener>> repositoryListenersProvider)
|
Provider<Set<RepositoryListener>> repositoryListenersProvider,
|
||||||
|
Provider<Set<RepositoryHook>> repositoryHooksProvider)
|
||||||
{
|
{
|
||||||
this.securityContextProvider = securityContextProvider;
|
this.securityContextProvider = securityContextProvider;
|
||||||
this.store = storeFactory.getStore(XmlRepositoryDatabase.class, STORE_NAME);
|
this.store = storeFactory.getStore(XmlRepositoryDatabase.class, STORE_NAME);
|
||||||
this.repositoryListenersProvider = repositoryListenersProvider;
|
this.repositoryListenersProvider = repositoryListenersProvider;
|
||||||
|
this.repositoryHooksProvider = repositoryHooksProvider;
|
||||||
handlerMap = new HashMap<String, RepositoryHandler>();
|
handlerMap = new HashMap<String, RepositoryHandler>();
|
||||||
types = new HashSet<Type>();
|
types = new HashSet<Type>();
|
||||||
|
|
||||||
@@ -299,6 +302,13 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
|
|||||||
{
|
{
|
||||||
addListeners(listeners);
|
addListeners(listeners);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set<RepositoryHook> hooks = repositoryHooksProvider.get();
|
||||||
|
|
||||||
|
if (Util.isNotEmpty(hooks))
|
||||||
|
{
|
||||||
|
addHooks(hooks);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -775,6 +785,9 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
|
|||||||
/** Field description */
|
/** Field description */
|
||||||
private XmlRepositoryDatabase repositoryDB;
|
private XmlRepositoryDatabase repositoryDB;
|
||||||
|
|
||||||
|
/** Field description */
|
||||||
|
private Provider<Set<RepositoryHook>> repositoryHooksProvider;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private Provider<Set<RepositoryListener>> repositoryListenersProvider;
|
private Provider<Set<RepositoryListener>> repositoryListenersProvider;
|
||||||
|
|
||||||
|
|||||||
@@ -76,8 +76,13 @@ public class XmlRepositoryManagerTest extends RepositoryManagerTestBase
|
|||||||
|
|
||||||
when(listenerProvider.get()).thenReturn(new HashSet<RepositoryListener>());
|
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,
|
return new XmlRepositoryManager(contextProvider,
|
||||||
MockUtil.getAdminSecurityContextProvider(),
|
MockUtil.getAdminSecurityContextProvider(),
|
||||||
factory, handlerSet, listenerProvider);
|
factory, handlerSet, listenerProvider,
|
||||||
|
hookProvider);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user