/*
* Copyright 2013 gitblit.com.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit;
import javax.inject.Singleton;
import com.gitblit.manager.AuthenticationManager;
import com.gitblit.manager.FederationManager;
import com.gitblit.manager.IAuthenticationManager;
import com.gitblit.manager.IFederationManager;
import com.gitblit.manager.IGitblit;
import com.gitblit.manager.INotificationManager;
import com.gitblit.manager.IPluginManager;
import com.gitblit.manager.IProjectManager;
import com.gitblit.manager.IRepositoryManager;
import com.gitblit.manager.IRuntimeManager;
import com.gitblit.manager.IUserManager;
import com.gitblit.manager.NotificationManager;
import com.gitblit.manager.PluginManager;
import com.gitblit.manager.ProjectManager;
import com.gitblit.manager.RepositoryManager;
import com.gitblit.manager.RuntimeManager;
import com.gitblit.manager.UserManager;
import com.gitblit.transport.ssh.FileKeyManager;
import com.gitblit.transport.ssh.IPublicKeyManager;
import com.gitblit.transport.ssh.MemoryKeyManager;
import com.gitblit.transport.ssh.NullKeyManager;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.GitBlitWebApp;
import dagger.Module;
import dagger.Provides;
/**
* DaggerModule references all injectable objects.
*
* @author James Moger
*
*/
@Module(
library = true,
injects = {
IStoredSettings.class,
// core managers
IRuntimeManager.class,
IPluginManager.class,
INotificationManager.class,
IUserManager.class,
IAuthenticationManager.class,
IPublicKeyManager.class,
IRepositoryManager.class,
IProjectManager.class,
IFederationManager.class,
// the monolithic manager
IGitblit.class,
// the Gitblit Wicket app
GitBlitWebApp.class
}
)
public class DaggerModule {
@Provides @Singleton IStoredSettings provideSettings() {
return new FileSettings();
}
@Provides @Singleton IRuntimeManager provideRuntimeManager(IStoredSettings settings) {
return new RuntimeManager(settings);
}
@Provides @Singleton IPluginManager providePluginManager(IRuntimeManager runtimeManager) {
return new PluginManager(runtimeManager);
}
@Provides @Singleton INotificationManager provideNotificationManager(IStoredSettings settings) {
return new NotificationManager(settings);
}
@Provides @Singleton IUserManager provideUserManager(IRuntimeManager runtimeManager) {
return new UserManager(runtimeManager);
}
@Provides @Singleton IAuthenticationManager provideAuthenticationManager(
IRuntimeManager runtimeManager,
IUserManager userManager) {
return new AuthenticationManager(
runtimeManager,
userManager);
}
@Provides @Singleton IPublicKeyManager providePublicKeyManager(
IStoredSettings settings,
IRuntimeManager runtimeManager) {
String clazz = settings.getString(Keys.git.sshKeysManager, FileKeyManager.class.getName());
if (StringUtils.isEmpty(clazz)) {
clazz = FileKeyManager.class.getName();
}
if (FileKeyManager.class.getName().equals(clazz)) {
return new FileKeyManager(runtimeManager);
} else if (NullKeyManager.class.getName().equals(clazz)) {
return new NullKeyManager();
} else if (MemoryKeyManager.class.getName().equals(clazz)) {
return new MemoryKeyManager();
} else {
try {
Class<?> mgrClass = Class.forName(clazz);
return (IPublicKeyManager) mgrClass.newInstance();
} catch (Exception e) {
}
return null;
}
}
@Provides @Singleton IRepositoryManager provideRepositoryManager(
IRuntimeManager runtimeManager,
IUserManager userManager) {
return new RepositoryManager(
runtimeManager,
userManager);
}
@Provides @Singleton IProjectManager provideProjectManager(
IRuntimeManager runtimeManager,
IUserManager userManager,
IRepositoryManager repositoryManager) {
return new ProjectManager(
runtimeManager,
userManager,
repositoryManager);
}
@Provides @Singleton IFederationManager provideFederationManager(
IRuntimeManager runtimeManager,
INotificationManager notificationManager,
IRepositoryManager repositoryManager) {
return new FederationManager(
runtimeManager,
notificationManager,
repositoryManager);
}
@Provides @Singleton IGitblit provideGitblit(
IRuntimeManager runtimeManager,
IPluginManager pluginManager,
INotificationManager notificationManager,
IUserManager userManager,
IAuthenticationManager authenticationManager,
IPublicKeyManager publicKeyManager,
IRepositoryManager repositoryManager,
IProjectManager projectManager,
IFederationManager federationManager) {
return new GitBlit(
runtimeManager,
pluginManager,
notificationManager,
userManager,
authenticationManager,
publicKeyManager,
repositoryManager,
projectManager,
federationManager);
}
@Provides @Singleton GitBlitWebApp provideWebApplication(
IRuntimeManager runtimeManager,
IPluginManager pluginManager,
INotificationManager notificationManager,
IUserManager userManager,
IAuthenticationManager authenticationManager,
IPublicKeyManager publicKeyManager,
IRepositoryManager repositoryManager,
IProjectManager projectManager,
IFederationManager federationManager,
IGitblit gitblit) {
return new GitBlitWebApp(
runtimeManager,
pluginManager,
notificationManager,
userManager,
authenticationManager,
publicKeyManager,
repositoryManager,
projectManager,
federationManager,
gitblit);
}
}