Embrace @Inject for Managers, Servlets, and Filters
diff --git a/src/main/java/com/gitblit/DaggerModule.java b/src/main/java/com/gitblit/DaggerModule.java
index aa10198..662ca03 100644
--- a/src/main/java/com/gitblit/DaggerModule.java
+++ b/src/main/java/com/gitblit/DaggerModule.java
@@ -72,7 +72,6 @@
  *
  */
 @Module(
-	library = true,
 	injects = {
 			IStoredSettings.class,
 
@@ -123,32 +122,24 @@
 		return new FileSettings();
 	}
 
-	@Provides @Singleton IRuntimeManager provideRuntimeManager(IStoredSettings settings) {
-		return new RuntimeManager(settings);
+	@Provides @Singleton IRuntimeManager provideRuntimeManager(RuntimeManager manager) {
+		return manager;
 	}
 
-	@Provides @Singleton IPluginManager providePluginManager(IRuntimeManager runtimeManager) {
-		return new PluginManager(runtimeManager);
+	@Provides @Singleton IPluginManager providePluginManager(PluginManager manager) {
+		return manager;
 	}
 
-	@Provides @Singleton INotificationManager provideNotificationManager(IStoredSettings settings) {
-		return new NotificationManager(settings);
+	@Provides @Singleton INotificationManager provideNotificationManager(NotificationManager manager) {
+		return manager;
 	}
 
-	@Provides @Singleton IUserManager provideUserManager(
-			IRuntimeManager runtimeManager,
-			IPluginManager pluginManager) {
-
-		return new UserManager(runtimeManager, pluginManager);
+	@Provides @Singleton IUserManager provideUserManager(UserManager manager) {
+		return manager;
 	}
 
-	@Provides @Singleton IAuthenticationManager provideAuthenticationManager(
-			IRuntimeManager runtimeManager,
-			IUserManager userManager) {
-
-		return new AuthenticationManager(
-				runtimeManager,
-				userManager);
+	@Provides @Singleton IAuthenticationManager provideAuthenticationManager(AuthenticationManager manager) {
+		return manager;
 	}
 
 	@Provides @Singleton IPublicKeyManager providePublicKeyManager(
@@ -176,369 +167,19 @@
 		}
 	}
 
-	@Provides @Singleton IRepositoryManager provideRepositoryManager(
-			IRuntimeManager runtimeManager,
-			IPluginManager pluginManager,
-			IUserManager userManager) {
-
-		return new RepositoryManager(
-				runtimeManager,
-				pluginManager,
-				userManager);
+	@Provides @Singleton IRepositoryManager provideRepositoryManager(RepositoryManager manager) {
+		return manager;
 	}
 
-	@Provides @Singleton IProjectManager provideProjectManager(
-			IRuntimeManager runtimeManager,
-			IUserManager userManager,
-			IRepositoryManager repositoryManager) {
-
-		return new ProjectManager(
-				runtimeManager,
-				userManager,
-				repositoryManager);
+	@Provides @Singleton IProjectManager provideProjectManager(ProjectManager manager) {
+		return manager;
 	}
 
-	@Provides @Singleton IFederationManager provideFederationManager(
-			IRuntimeManager runtimeManager,
-			INotificationManager notificationManager,
-			IRepositoryManager repositoryManager) {
-
-		return new FederationManager(
-				runtimeManager,
-				notificationManager,
-				repositoryManager);
+	@Provides @Singleton IFederationManager provideFederationManager(FederationManager manager) {
+		return manager;
 	}
 
-	@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);
-	}
-//
-//	@Provides @Singleton GitblitWicketFilter provideGitblitWicketFilter(GitBlitWebApp webapp) {
-//		return new GitblitWicketFilter(webapp);
-//	}
-//
-//	@Provides GitServlet provideGitServlet(IGitblit gitblit) {
-//		return new GitServlet(gitblit);
-//	}
-//
-//	@Provides GitFilter provideGitFilter(
-//			IRuntimeManager runtimeManager,
-//			IUserManager userManager,
-//			IAuthenticationManager authenticationManager,
-//			IRepositoryManager repositoryManager,
-//			IFederationManager federationManager) {
-//
-//		return new GitFilter(
-//				runtimeManager,
-//				userManager,
-//				authenticationManager,
-//				repositoryManager,
-//				federationManager);
-//	}
-//
-//	@Provides @Singleton PagesServlet providePagesServlet(
-//			IRuntimeManager runtimeManager,
-//			IRepositoryManager repositoryManager) {
-//
-//		return new PagesServlet(runtimeManager, repositoryManager);
-//	}
-//
-//	@Provides @Singleton PagesFilter providePagesFilter(
-//			IRuntimeManager runtimeManager,
-//			IAuthenticationManager authenticationManager,
-//			IRepositoryManager repositoryManager) {
-//
-//		return new PagesFilter(
-//				runtimeManager,
-//				authenticationManager,
-//				repositoryManager);
-//	}
-//
-//	@Provides @Singleton RpcServlet provideRpcServlet(IGitblit gitblit) {
-//		return new RpcServlet(gitblit);
-//	}
-//
-//	@Provides @Singleton RpcFilter provideRpcFilter(
-//			IRuntimeManager runtimeManager,
-//			IAuthenticationManager authenticationManager) {
-//
-//		return new RpcFilter(runtimeManager, authenticationManager);
-//	}
-//
-//	@Provides @Singleton DownloadZipServlet provideDownloadZipServlet(
-//			IRuntimeManager runtimeManager,
-//			IRepositoryManager repositoryManager) {
-//
-//		return new DownloadZipServlet(runtimeManager, repositoryManager);
-//	}
-//
-//	@Provides @Singleton DownloadZipFilter provideDownloadZipFilter(
-//			IRuntimeManager runtimeManager,
-//			IAuthenticationManager authenticationManager,
-//			IRepositoryManager repositoryManager) {
-//
-//		return new DownloadZipFilter(
-//				runtimeManager,
-//				authenticationManager,
-//				repositoryManager);
-//	}
-//
-//	@Provides @Singleton SyndicationServlet provideSyndicationServlet(
-//			IRuntimeManager runtimeManager,
-//			IRepositoryManager repositoryManager,
-//			IProjectManager projectManager) {
-//
-//		return new SyndicationServlet(
-//				runtimeManager,
-//				repositoryManager,
-//				projectManager);
-//	}
-//
-//	@Provides @Singleton SyndicationFilter provideSyndicationFilter(
-//			IRuntimeManager runtimeManager,
-//			IAuthenticationManager authenticationManager,
-//			IRepositoryManager repositoryManager,
-//			IProjectManager projectManager) {
-//
-//		return new SyndicationFilter(
-//				runtimeManager,
-//				authenticationManager,
-//				repositoryManager,
-//				projectManager);
-//	}
-//
-//	@Provides @Singleton FederationServlet provideFederationServlet(
-//			IRuntimeManager runtimeManager,
-//			IUserManager userManager,
-//			IRepositoryManager repositoryManager,
-//			IFederationManager federationManager) {
-//
-//		return new FederationServlet(
-//				runtimeManager,
-//				userManager,
-//				repositoryManager,
-//				federationManager);
-//	}
-//
-//	@Provides @Singleton SparkleShareInviteServlet provideSparkleshareInviteServlet(
-//			IRuntimeManager runtimeManager,
-//			IUserManager userManager,
-//			IAuthenticationManager authenticationManager,
-//			IRepositoryManager repositoryManager) {
-//
-//		return new SparkleShareInviteServlet(
-//				runtimeManager,
-//				userManager,
-//				authenticationManager,
-//				repositoryManager);
-//	}
-//
-//	@Provides @Singleton BranchGraphServlet provideBranchGraphServlet(
-//			IRuntimeManager runtimeManager,
-//			IRepositoryManager repositoryManager) {
-//
-//		return new BranchGraphServlet(runtimeManager, repositoryManager);
-//	}
-//
-//	@Provides @Singleton RobotsTxtServlet provideRobotsTxtServlet(IRuntimeManager runtimeManager) {
-//		return new RobotsTxtServlet(runtimeManager);
-//	}
-//
-//	@Provides @Singleton LogoServlet provideLogoServlet(IRuntimeManager runtimeManager) {
-//		return new LogoServlet(runtimeManager);
-//	}
-//
-//	@Provides @Singleton EnforceAuthenticationFilter provideEnforceAuthenticationFilter(
-//			IRuntimeManager runtimeManager,
-//			IAuthenticationManager authenticationManager) {
-//
-//		return new EnforceAuthenticationFilter(runtimeManager, authenticationManager);
-//	}
-
-
-	@Provides @Singleton GitblitWicketFilter provideGitblitWicketFilter(GitBlitWebApp webapp) {
-		return new GitblitWicketFilter();
-	}
-
-	@Provides GitServlet provideGitServlet(IGitblit gitblit) {
-		return new GitServlet();
-	}
-
-	@Provides GitFilter provideGitFilter(
-			IRuntimeManager runtimeManager,
-			IUserManager userManager,
-			IAuthenticationManager authenticationManager,
-			IRepositoryManager repositoryManager,
-			IFederationManager federationManager) {
-
-		return new GitFilter();
-	}
-
-	@Provides @Singleton RawServlet provideRawServlet(
-			IRuntimeManager runtimeManager,
-			IRepositoryManager repositoryManager) {
-
-		return new RawServlet();
-	}
-
-	@Provides @Singleton RawFilter provideRawFilter(
-			IRuntimeManager runtimeManager,
-			IAuthenticationManager authenticationManager,
-			IRepositoryManager repositoryManager) {
-
-		return new RawFilter();
-	}
-
-	@Provides @Singleton PagesServlet providePagesServlet(
-			IRuntimeManager runtimeManager,
-			IRepositoryManager repositoryManager) {
-
-		return new PagesServlet();
-	}
-
-	@Provides @Singleton PagesFilter providePagesFilter(
-			IRuntimeManager runtimeManager,
-			IAuthenticationManager authenticationManager,
-			IRepositoryManager repositoryManager) {
-
-		return new PagesFilter();
-	}
-
-	@Provides @Singleton RpcServlet provideRpcServlet(IGitblit gitblit) {
-		return new RpcServlet();
-	}
-
-	@Provides @Singleton RpcFilter provideRpcFilter(
-			IRuntimeManager runtimeManager,
-			IAuthenticationManager authenticationManager) {
-
-		return new RpcFilter();
-	}
-
-	@Provides @Singleton DownloadZipServlet provideDownloadZipServlet(
-			IRuntimeManager runtimeManager,
-			IRepositoryManager repositoryManager) {
-
-		return new DownloadZipServlet();
-	}
-
-	@Provides @Singleton DownloadZipFilter provideDownloadZipFilter(
-			IRuntimeManager runtimeManager,
-			IAuthenticationManager authenticationManager,
-			IRepositoryManager repositoryManager) {
-
-		return new DownloadZipFilter();
-	}
-
-	@Provides @Singleton SyndicationServlet provideSyndicationServlet(
-			IRuntimeManager runtimeManager,
-			IRepositoryManager repositoryManager,
-			IProjectManager projectManager) {
-
-		return new SyndicationServlet();
-	}
-
-	@Provides @Singleton SyndicationFilter provideSyndicationFilter(
-			IRuntimeManager runtimeManager,
-			IAuthenticationManager authenticationManager,
-			IRepositoryManager repositoryManager,
-			IProjectManager projectManager) {
-
-		return new SyndicationFilter();
-	}
-
-	@Provides @Singleton FederationServlet provideFederationServlet(
-			IRuntimeManager runtimeManager,
-			IUserManager userManager,
-			IRepositoryManager repositoryManager,
-			IFederationManager federationManager) {
-
-		return new FederationServlet();
-	}
-
-	@Provides @Singleton SparkleShareInviteServlet provideSparkleshareInviteServlet(
-			IRuntimeManager runtimeManager,
-			IUserManager userManager,
-			IAuthenticationManager authenticationManager,
-			IRepositoryManager repositoryManager) {
-
-		return new SparkleShareInviteServlet();
-	}
-
-	@Provides @Singleton BranchGraphServlet provideBranchGraphServlet(
-			IRuntimeManager runtimeManager,
-			IRepositoryManager repositoryManager) {
-
-		return new BranchGraphServlet();
-	}
-
-	@Provides @Singleton RobotsTxtServlet provideRobotsTxtServlet(IRuntimeManager runtimeManager) {
-		return new RobotsTxtServlet();
-	}
-
-	@Provides @Singleton LogoServlet provideLogoServlet(IRuntimeManager runtimeManager) {
-		return new LogoServlet();
-	}
-
-	@Provides @Singleton PtServlet providePtServlet(IRuntimeManager runtimeManager) {
-		return new PtServlet();
-	}
-
-	@Provides @Singleton ProxyFilter provideProxyFilter(
-			IRuntimeManager runtimeManager,
-			IAuthenticationManager authenticationManager) {
-
-		return new ProxyFilter();
-	}
-
-	@Provides @Singleton EnforceAuthenticationFilter provideEnforceAuthenticationFilter(
-			IRuntimeManager runtimeManager,
-			IAuthenticationManager authenticationManager) {
-
-		return new EnforceAuthenticationFilter();
+	@Provides @Singleton IGitblit provideGitblit(GitBlit gitblit) {
+		return gitblit;
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java
index f9d9be9..8bfa043 100644
--- a/src/main/java/com/gitblit/GitBlit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.inject.Inject;
 import javax.inject.Singleton;
 import javax.servlet.http.HttpServletRequest;
 
@@ -70,6 +71,7 @@
 
 	private ITicketService ticketService;
 
+	@Inject
 	public GitBlit(
 			IRuntimeManager runtimeManager,
 			IPluginManager pluginManager,
diff --git a/src/main/java/com/gitblit/dagger/DaggerWicketFilter.java b/src/main/java/com/gitblit/dagger/DaggerWicketFilter.java
deleted file mode 100644
index c2fd4d6..0000000
--- a/src/main/java/com/gitblit/dagger/DaggerWicketFilter.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*

- * 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.dagger;

-

-import javax.servlet.FilterConfig;

-import javax.servlet.ServletContext;

-import javax.servlet.ServletException;

-

-import org.apache.wicket.protocol.http.WicketFilter;

-

-import dagger.ObjectGraph;

-

-/**

- * Uses Dagger to manually inject dependencies into a Wicket filter.

- * This class is useful for servlet containers that offer CDI and are

- * confused by Dagger.

- *

- * @author James Moger

- *

- */

-public abstract class DaggerWicketFilter extends WicketFilter {

-

-	@Override

-	public final void init(FilterConfig filterConfig) throws ServletException {

-		ServletContext context = filterConfig.getServletContext();

-		ObjectGraph objectGraph = (ObjectGraph) context.getAttribute(DaggerContext.INJECTOR_NAME);

-		inject(objectGraph);

-		super.init(filterConfig);

-	}

-

-	protected abstract void inject(ObjectGraph dagger);

-}

diff --git a/src/main/java/com/gitblit/manager/AuthenticationManager.java b/src/main/java/com/gitblit/manager/AuthenticationManager.java
index d1b1af0..2aa2d19 100644
--- a/src/main/java/com/gitblit/manager/AuthenticationManager.java
+++ b/src/main/java/com/gitblit/manager/AuthenticationManager.java
@@ -24,6 +24,7 @@
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
+import javax.inject.Inject;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -76,6 +77,7 @@
 
 	private final Map<String, String> legacyRedirects;
 
+	@Inject
 	public AuthenticationManager(
 			IRuntimeManager runtimeManager,
 			IUserManager userManager) {
diff --git a/src/main/java/com/gitblit/manager/FederationManager.java b/src/main/java/com/gitblit/manager/FederationManager.java
index 95d38af..3219352 100644
--- a/src/main/java/com/gitblit/manager/FederationManager.java
+++ b/src/main/java/com/gitblit/manager/FederationManager.java
@@ -26,6 +26,7 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
 
 import org.slf4j.Logger;
@@ -70,6 +71,7 @@
 
 	private final IRepositoryManager repositoryManager;
 
+	@Inject
 	public FederationManager(
 			IRuntimeManager runtimeManager,
 			INotificationManager notificationManager,
diff --git a/src/main/java/com/gitblit/manager/NotificationManager.java b/src/main/java/com/gitblit/manager/NotificationManager.java
index 69a611b..63f064e 100644
--- a/src/main/java/com/gitblit/manager/NotificationManager.java
+++ b/src/main/java/com/gitblit/manager/NotificationManager.java
@@ -20,6 +20,7 @@
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
+import javax.inject.Inject;
 import javax.mail.Message;
 
 import org.slf4j.Logger;
@@ -48,6 +49,7 @@
 
 	private final MailService mailService;
 
+	@Inject
 	public NotificationManager(IStoredSettings settings) {
 		this.settings = settings;
 		this.mailService = new MailService(settings);
diff --git a/src/main/java/com/gitblit/manager/PluginManager.java b/src/main/java/com/gitblit/manager/PluginManager.java
index 2ee4855..a0c873e 100644
--- a/src/main/java/com/gitblit/manager/PluginManager.java
+++ b/src/main/java/com/gitblit/manager/PluginManager.java
@@ -34,6 +34,8 @@
 import java.util.Map;
 import java.util.TreeMap;
 
+import javax.inject.Inject;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -81,6 +83,7 @@
 
 	private int readTimeout = 12800;
 
+	@Inject
 	public PluginManager(IRuntimeManager runtimeManager) {
 		File dir = runtimeManager.getFileOrFolder(Keys.plugins.folder, "${baseFolder}/plugins");
 		dir.mkdirs();
diff --git a/src/main/java/com/gitblit/manager/ProjectManager.java b/src/main/java/com/gitblit/manager/ProjectManager.java
index 666f521..4da7f80 100644
--- a/src/main/java/com/gitblit/manager/ProjectManager.java
+++ b/src/main/java/com/gitblit/manager/ProjectManager.java
@@ -27,6 +27,8 @@
 import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
 
+import javax.inject.Inject;
+
 import org.eclipse.jgit.storage.file.FileBasedConfig;
 import org.eclipse.jgit.util.FS;
 import org.slf4j.Logger;
@@ -68,6 +70,7 @@
 
 	private FileBasedConfig projectConfigs;
 
+	@Inject
 	public ProjectManager(
 			IRuntimeManager runtimeManager,
 			IUserManager userManager,
diff --git a/src/main/java/com/gitblit/manager/RepositoryManager.java b/src/main/java/com/gitblit/manager/RepositoryManager.java
index 0160363..a82cd01 100644
--- a/src/main/java/com/gitblit/manager/RepositoryManager.java
+++ b/src/main/java/com/gitblit/manager/RepositoryManager.java
@@ -44,6 +44,8 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
 
+import javax.inject.Inject;
+
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.lib.RepositoryCache;
 import org.eclipse.jgit.lib.RepositoryCache.FileKey;
@@ -127,6 +129,7 @@
 
 	private MirrorService mirrorExecutor;
 
+	@Inject
 	public RepositoryManager(
 			IRuntimeManager runtimeManager,
 			IPluginManager pluginManager,
diff --git a/src/main/java/com/gitblit/manager/RuntimeManager.java b/src/main/java/com/gitblit/manager/RuntimeManager.java
index 9cdc64e..00fe1c9 100644
--- a/src/main/java/com/gitblit/manager/RuntimeManager.java
+++ b/src/main/java/com/gitblit/manager/RuntimeManager.java
@@ -22,6 +22,8 @@
 import java.util.Map;
 import java.util.TimeZone;
 
+import javax.inject.Inject;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,6 +49,7 @@
 
 	private TimeZone timezone;
 
+	@Inject
 	public RuntimeManager(IStoredSettings settings) {
 		this(settings, null);
 	}
diff --git a/src/main/java/com/gitblit/manager/UserManager.java b/src/main/java/com/gitblit/manager/UserManager.java
index 2b82ffb..fe21b06 100644
--- a/src/main/java/com/gitblit/manager/UserManager.java
+++ b/src/main/java/com/gitblit/manager/UserManager.java
@@ -24,6 +24,8 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Inject;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -57,6 +59,7 @@
 
 	private IUserService userService;
 
+	@Inject
 	public UserManager(IRuntimeManager runtimeManager, IPluginManager pluginManager) {
 		this.settings = runtimeManager.getSettings();
 		this.runtimeManager = runtimeManager;
diff --git a/src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java b/src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java
index 0e6d323..6d2efa4 100644
--- a/src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java
+++ b/src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java
@@ -19,21 +19,19 @@
 import java.text.MessageFormat;

 

 import javax.servlet.FilterChain;

-import javax.servlet.FilterConfig;

 import javax.servlet.ServletException;

 import javax.servlet.ServletRequest;

 import javax.servlet.ServletResponse;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

+import com.gitblit.manager.IAuthenticationManager;

 import com.gitblit.manager.IRepositoryManager;

 import com.gitblit.manager.IRuntimeManager;

 import com.gitblit.models.RepositoryModel;

 import com.gitblit.models.UserModel;

 import com.gitblit.utils.StringUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * The AccessRestrictionFilter is an AuthenticationFilter that confirms that the

  * requested repository can be accessed by the anonymous or named user.

@@ -54,11 +52,15 @@
 

 	protected IRepositoryManager repositoryManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger, FilterConfig filterConfig) {

-		super.inject(dagger, filterConfig);

-		this.runtimeManager = dagger.get(IRuntimeManager.class);

-		this.repositoryManager = dagger.get(IRepositoryManager.class);

+	protected AccessRestrictionFilter(

+			IRuntimeManager runtimeManager,

+			IAuthenticationManager authenticationManager,

+			IRepositoryManager repositoryManager) {

+

+		super(authenticationManager);

+

+		this.runtimeManager = runtimeManager;

+		this.repositoryManager = repositoryManager;

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/servlet/AuthenticationFilter.java b/src/main/java/com/gitblit/servlet/AuthenticationFilter.java
index c21f869..6f13252 100644
--- a/src/main/java/com/gitblit/servlet/AuthenticationFilter.java
+++ b/src/main/java/com/gitblit/servlet/AuthenticationFilter.java
@@ -21,6 +21,7 @@
 import java.util.HashMap;

 import java.util.Map;

 

+import javax.servlet.Filter;

 import javax.servlet.FilterChain;

 import javax.servlet.FilterConfig;

 import javax.servlet.ServletException;

@@ -35,14 +36,11 @@
 import org.slf4j.LoggerFactory;

 

 import com.gitblit.Constants;

-import com.gitblit.dagger.DaggerFilter;

 import com.gitblit.manager.IAuthenticationManager;

 import com.gitblit.models.UserModel;

 import com.gitblit.utils.DeepCopier;

 import com.gitblit.utils.StringUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * The AuthenticationFilter is a servlet filter that preprocesses requests that

  * match its url pattern definition in the web.xml file.

@@ -52,7 +50,7 @@
  * @author James Moger

  *

  */

-public abstract class AuthenticationFilter extends DaggerFilter {

+public abstract class AuthenticationFilter implements Filter {

 

 	protected static final String CHALLENGE = "Basic realm=\"" + Constants.NAME + "\"";

 

@@ -62,9 +60,16 @@
 

 	protected IAuthenticationManager authenticationManager;

 

+	protected AuthenticationFilter(IAuthenticationManager authenticationManager) {

+		this.authenticationManager = authenticationManager;

+	}

+

 	@Override

-	protected void inject(ObjectGraph dagger, FilterConfig filterConfig) {

-		this.authenticationManager = dagger.get(IAuthenticationManager.class);

+	public void init(FilterConfig filterConfig) throws ServletException {

+	}

+

+	@Override

+	public void destroy() {

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/servlet/BranchGraphServlet.java b/src/main/java/com/gitblit/servlet/BranchGraphServlet.java
index 0abe347..c1ad080 100644
--- a/src/main/java/com/gitblit/servlet/BranchGraphServlet.java
+++ b/src/main/java/com/gitblit/servlet/BranchGraphServlet.java
@@ -36,7 +36,10 @@
 import java.util.TreeSet;

 

 import javax.imageio.ImageIO;

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

@@ -52,20 +55,18 @@
 import com.gitblit.Constants;

 import com.gitblit.IStoredSettings;

 import com.gitblit.Keys;

-import com.gitblit.dagger.DaggerServlet;

 import com.gitblit.manager.IRepositoryManager;

 import com.gitblit.utils.JGitUtils;

 import com.gitblit.utils.StringUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * Handles requests for branch graphs

  *

  * @author James Moger

  *

  */

-public class BranchGraphServlet extends DaggerServlet {

+@Singleton

+public class BranchGraphServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

@@ -82,20 +83,20 @@
 

 	private IRepositoryManager repositoryManager;

 

-	public BranchGraphServlet() {

-		super();

+	@Inject

+	public BranchGraphServlet(

+			IStoredSettings settings,

+			IRepositoryManager repositoryManager) {

+

+		this.settings = settings;

+		this.repositoryManager = repositoryManager;

+

 		strokeCache = new Stroke[4];

 		for (int i = 1; i < strokeCache.length; i++) {

 			strokeCache[i] = new BasicStroke(i);

 		}

 	}

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.settings = dagger.get(IStoredSettings.class);

-		this.repositoryManager = dagger.get(IRepositoryManager.class);

-	}

-

 	/**

 	 * Returns an url to this servlet for the specified parameters.

 	 *

diff --git a/src/main/java/com/gitblit/servlet/DownloadZipFilter.java b/src/main/java/com/gitblit/servlet/DownloadZipFilter.java
index 0c7b3e5..3f20c2b 100644
--- a/src/main/java/com/gitblit/servlet/DownloadZipFilter.java
+++ b/src/main/java/com/gitblit/servlet/DownloadZipFilter.java
@@ -15,7 +15,13 @@
  */

 package com.gitblit.servlet;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

+

 import com.gitblit.Constants.AccessRestrictionType;

+import com.gitblit.manager.IAuthenticationManager;

+import com.gitblit.manager.IRepositoryManager;

+import com.gitblit.manager.IRuntimeManager;

 import com.gitblit.models.RepositoryModel;

 import com.gitblit.models.UserModel;

 

@@ -27,8 +33,18 @@
  * @author James Moger

  *

  */

+@Singleton

 public class DownloadZipFilter extends AccessRestrictionFilter {

 

+	@Inject

+	public DownloadZipFilter(

+			IRuntimeManager runtimeManager,

+			IAuthenticationManager authenticationManager,

+			IRepositoryManager repositoryManager) {

+

+		super(runtimeManager, authenticationManager, repositoryManager);

+	}

+

 	/**

 	 * Extract the repository name from the url.

 	 *

diff --git a/src/main/java/com/gitblit/servlet/DownloadZipServlet.java b/src/main/java/com/gitblit/servlet/DownloadZipServlet.java
index 6a64778..4b0e3bf 100644
--- a/src/main/java/com/gitblit/servlet/DownloadZipServlet.java
+++ b/src/main/java/com/gitblit/servlet/DownloadZipServlet.java
@@ -20,7 +20,10 @@
 import java.text.ParseException;

 import java.util.Date;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletResponse;

 

 import org.eclipse.jgit.lib.Repository;

@@ -31,15 +34,12 @@
 import com.gitblit.Constants;

 import com.gitblit.IStoredSettings;

 import com.gitblit.Keys;

-import com.gitblit.dagger.DaggerServlet;

 import com.gitblit.manager.IRepositoryManager;

 import com.gitblit.utils.CompressionUtils;

 import com.gitblit.utils.JGitUtils;

 import com.gitblit.utils.MarkdownUtils;

 import com.gitblit.utils.StringUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * Streams out a zip file from the specified repository for any tree path at any

  * revision.

@@ -47,7 +47,8 @@
  * @author James Moger

  *

  */

-public class DownloadZipServlet extends DaggerServlet {

+@Singleton

+public class DownloadZipServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

@@ -76,10 +77,10 @@
 		}

 	}

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.settings = dagger.get(IStoredSettings.class);

-		this.repositoryManager = dagger.get(IRepositoryManager.class);

+	@Inject

+	public DownloadZipServlet(IStoredSettings settings, IRepositoryManager repositoryManager) {

+		this.settings = settings;

+		this.repositoryManager = repositoryManager;

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/servlet/EnforceAuthenticationFilter.java b/src/main/java/com/gitblit/servlet/EnforceAuthenticationFilter.java
index c015021..a9e6554 100644
--- a/src/main/java/com/gitblit/servlet/EnforceAuthenticationFilter.java
+++ b/src/main/java/com/gitblit/servlet/EnforceAuthenticationFilter.java
@@ -18,6 +18,9 @@
 import java.io.IOException;
 import java.text.MessageFormat;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
@@ -31,12 +34,9 @@
 
 import com.gitblit.IStoredSettings;
 import com.gitblit.Keys;
-import com.gitblit.dagger.DaggerFilter;
 import com.gitblit.manager.IAuthenticationManager;
 import com.gitblit.models.UserModel;
 
-import dagger.ObjectGraph;
-
 /**
  * This filter enforces authentication via HTTP Basic Authentication, if the settings indicate so.
  * It looks at the settings "web.authenticateViewPages" and "web.enforceHttpBasicAuthentication"; if
@@ -45,7 +45,8 @@
  * @author Laurens Vrijnsen
  *
  */
-public class EnforceAuthenticationFilter extends DaggerFilter {
+@Singleton
+public class EnforceAuthenticationFilter implements Filter {
 
 	protected transient Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -53,10 +54,21 @@
 
 	private IAuthenticationManager authenticationManager;
 
+	@Inject
+	public EnforceAuthenticationFilter(
+			IStoredSettings settings,
+			IAuthenticationManager authenticationManager) {
+
+		this.settings = settings;
+		this.authenticationManager = authenticationManager;
+	}
+
 	@Override
-	protected void inject(ObjectGraph dagger, FilterConfig filterConfig) {
-		this.settings = dagger.get(IStoredSettings.class);
-		this.authenticationManager = dagger.get(IAuthenticationManager.class);
+	public void init(FilterConfig config) {
+	}
+
+	@Override
+	public void destroy() {
 	}
 
 	/*
@@ -87,12 +99,4 @@
 			chain.doFilter(request, response);
 		}
 	}
-
-
-	/*
-	 * @see javax.servlet.Filter#destroy()
-	 */
-	@Override
-	public void destroy() {
-	}
 }
diff --git a/src/main/java/com/gitblit/servlet/FederationServlet.java b/src/main/java/com/gitblit/servlet/FederationServlet.java
index 8dbf0e1..8a03f08 100644
--- a/src/main/java/com/gitblit/servlet/FederationServlet.java
+++ b/src/main/java/com/gitblit/servlet/FederationServlet.java
@@ -25,6 +25,8 @@
 import java.util.Map;

 import java.util.Set;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.http.HttpServletResponse;

 

 import com.gitblit.Constants.FederationRequest;

@@ -43,14 +45,13 @@
 import com.gitblit.utils.StringUtils;

 import com.gitblit.utils.TimeUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * Handles federation requests.

  *

  * @author James Moger

  *

  */

+@Singleton

 public class FederationServlet extends JsonServlet {

 

 	private static final long serialVersionUID = 1L;

@@ -63,12 +64,17 @@
 

 	private IFederationManager federationManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.settings = dagger.get(IStoredSettings.class);

-		this.userManager = dagger.get(IUserManager.class);

-		this.repositoryManager = dagger.get(IRepositoryManager.class);

-		this.federationManager = dagger.get(IFederationManager.class);

+	@Inject

+	public FederationServlet(

+			IStoredSettings settings,

+			IUserManager userManager,

+			IRepositoryManager repositoryManager,

+			IFederationManager federationManager) {

+

+		this.settings = settings;

+		this.userManager = userManager;

+		this.repositoryManager = repositoryManager;

+		this.federationManager = federationManager;

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java
index bb3d321..e2c4589 100644
--- a/src/main/java/com/gitblit/servlet/GitFilter.java
+++ b/src/main/java/com/gitblit/servlet/GitFilter.java
@@ -17,7 +17,8 @@
 

 import java.text.MessageFormat;

 

-import javax.servlet.FilterConfig;

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.http.HttpServletRequest;

 

 import com.gitblit.Constants.AccessRestrictionType;

@@ -25,13 +26,14 @@
 import com.gitblit.GitBlitException;

 import com.gitblit.IStoredSettings;

 import com.gitblit.Keys;

+import com.gitblit.manager.IAuthenticationManager;

 import com.gitblit.manager.IFederationManager;

+import com.gitblit.manager.IRepositoryManager;

+import com.gitblit.manager.IRuntimeManager;

 import com.gitblit.models.RepositoryModel;

 import com.gitblit.models.UserModel;

 import com.gitblit.utils.StringUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * The GitFilter is an AccessRestrictionFilter which ensures that Git client

  * requests for push, clone, or view restricted repositories are authenticated

@@ -40,6 +42,7 @@
  * @author James Moger

  *

  */

+@Singleton

 public class GitFilter extends AccessRestrictionFilter {

 

 	protected static final String gitReceivePack = "/git-receive-pack";

@@ -53,11 +56,18 @@
 

 	private IFederationManager federationManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger, FilterConfig filterConfig) {

-		super.inject(dagger, filterConfig);

-		this.settings = dagger.get(IStoredSettings.class);

-		this.federationManager = dagger.get(IFederationManager.class);

+	@Inject

+	public GitFilter(

+			IStoredSettings settings,

+			IRuntimeManager runtimeManager,

+			IAuthenticationManager authenticationManager,

+			IRepositoryManager repositoryManager,

+			IFederationManager federationManager) {

+

+		super(runtimeManager, authenticationManager, repositoryManager);

+

+		this.settings = settings;

+		this.federationManager = federationManager;

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/servlet/GitServlet.java b/src/main/java/com/gitblit/servlet/GitServlet.java
index 93fe31d..e9c5242 100644
--- a/src/main/java/com/gitblit/servlet/GitServlet.java
+++ b/src/main/java/com/gitblit/servlet/GitServlet.java
@@ -20,6 +20,8 @@
 import java.io.IOException;

 import java.util.Enumeration;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.FilterChain;

 import javax.servlet.FilterConfig;

 import javax.servlet.ServletConfig;

@@ -33,14 +35,11 @@
 

 import org.eclipse.jgit.http.server.GitFilter;

 

-import com.gitblit.dagger.DaggerContext;

 import com.gitblit.git.GitblitReceivePackFactory;

 import com.gitblit.git.GitblitUploadPackFactory;

 import com.gitblit.git.RepositoryResolver;

 import com.gitblit.manager.IGitblit;

 

-import dagger.ObjectGraph;

-

 /**

  * The GitServlet provides http/https access to Git repositories.

  * Access to this servlet is protected by the GitFilter.

@@ -48,24 +47,23 @@
  * @author James Moger

  *

  */

+@Singleton

 public class GitServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

 	private final GitFilter gitFilter;

 

-	public GitServlet() {

+	@Inject

+	public GitServlet(IGitblit gitblit) {

 		gitFilter = new GitFilter();

+		gitFilter.setRepositoryResolver(new RepositoryResolver<HttpServletRequest>(gitblit));

+		gitFilter.setUploadPackFactory(new GitblitUploadPackFactory<HttpServletRequest>(gitblit));

+		gitFilter.setReceivePackFactory(new GitblitReceivePackFactory<HttpServletRequest>(gitblit));

 	}

 

 	@Override

 	public void init(final ServletConfig config) throws ServletException {

-		ServletContext context = config.getServletContext();

-		ObjectGraph dagger = (ObjectGraph) context.getAttribute(DaggerContext.INJECTOR_NAME);

-		IGitblit gitblit = dagger.get(IGitblit.class);

-		gitFilter.setRepositoryResolver(new RepositoryResolver<HttpServletRequest>(gitblit));

-		gitFilter.setUploadPackFactory(new GitblitUploadPackFactory<HttpServletRequest>(gitblit));

-		gitFilter.setReceivePackFactory(new GitblitReceivePackFactory<HttpServletRequest>(gitblit));

 

 		gitFilter.init(new FilterConfig() {

 			@Override

diff --git a/src/main/java/com/gitblit/servlet/JsonServlet.java b/src/main/java/com/gitblit/servlet/JsonServlet.java
index 4378c8a..abc0f29 100644
--- a/src/main/java/com/gitblit/servlet/JsonServlet.java
+++ b/src/main/java/com/gitblit/servlet/JsonServlet.java
@@ -21,6 +21,7 @@
 import java.text.MessageFormat;

 

 import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

@@ -28,7 +29,6 @@
 import org.slf4j.LoggerFactory;

 

 import com.gitblit.Constants;

-import com.gitblit.dagger.DaggerServlet;

 import com.gitblit.utils.JsonUtils;

 import com.gitblit.utils.StringUtils;

 

@@ -38,7 +38,7 @@
  * @author James Moger

  *

  */

-public abstract class JsonServlet extends DaggerServlet {

+public abstract class JsonServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

diff --git a/src/main/java/com/gitblit/servlet/LogoServlet.java b/src/main/java/com/gitblit/servlet/LogoServlet.java
index 96f34af..489e98b 100644
--- a/src/main/java/com/gitblit/servlet/LogoServlet.java
+++ b/src/main/java/com/gitblit/servlet/LogoServlet.java
@@ -21,24 +21,25 @@
 import java.io.InputStream;

 import java.io.OutputStream;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.ServletContext;

 import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

 import com.gitblit.Keys;

-import com.gitblit.dagger.DaggerServlet;

 import com.gitblit.manager.IRuntimeManager;

 

-import dagger.ObjectGraph;

-

 /**

  * Handles requests for logo.png

  *

  * @author James Moger

  *

  */

-public class LogoServlet extends DaggerServlet {

+@Singleton

+public class LogoServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

@@ -46,9 +47,9 @@
 

 	private IRuntimeManager runtimeManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.runtimeManager = dagger.get(IRuntimeManager.class);

+	@Inject

+	public LogoServlet(IRuntimeManager runtimeManager) {

+		this.runtimeManager = runtimeManager;

 	}

 

 	@Override

diff --git a/src/main/java/com/gitblit/servlet/PagesFilter.java b/src/main/java/com/gitblit/servlet/PagesFilter.java
index e07d9b3..fa8c9ab 100644
--- a/src/main/java/com/gitblit/servlet/PagesFilter.java
+++ b/src/main/java/com/gitblit/servlet/PagesFilter.java
@@ -15,6 +15,13 @@
  */

 package com.gitblit.servlet;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

+

+import com.gitblit.manager.IAuthenticationManager;

+import com.gitblit.manager.IRepositoryManager;

+import com.gitblit.manager.IRuntimeManager;

+

 

 /**

  * The PagesFilter is an AccessRestrictionFilter which ensures the gh-pages

@@ -23,7 +30,17 @@
  * @author James Moger

  *

  */

+

+@Singleton

 public class PagesFilter extends RawFilter {

 

+	@Inject

+	public PagesFilter(

+			IRuntimeManager runtimeManager,

+			IAuthenticationManager authenticationManager,

+			IRepositoryManager repositoryManager) {

+

+		super(runtimeManager, authenticationManager, repositoryManager);

+	}

 

 }

diff --git a/src/main/java/com/gitblit/servlet/PagesServlet.java b/src/main/java/com/gitblit/servlet/PagesServlet.java
index f578f86..4cf4302 100644
--- a/src/main/java/com/gitblit/servlet/PagesServlet.java
+++ b/src/main/java/com/gitblit/servlet/PagesServlet.java
@@ -15,10 +15,14 @@
  */

 package com.gitblit.servlet;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

 import com.gitblit.Constants;

+import com.gitblit.manager.IRepositoryManager;

+import com.gitblit.manager.IRuntimeManager;

 

 /**

  * Serves the content of a gh-pages branch.

@@ -26,6 +30,7 @@
  * @author James Moger

  *

  */

+@Singleton

 public class PagesServlet extends RawServlet {

 

 	private static final long serialVersionUID = 1L;

@@ -46,6 +51,14 @@
 		return baseURL + Constants.PAGES + repository + "/" + (path == null ? "" : ("/" + path));

 	}

 

+	@Inject

+	public PagesServlet(

+			IRuntimeManager runtimeManager,

+			IRepositoryManager repositoryManager) {

+

+		super(runtimeManager, repositoryManager);

+	}

+

 	@Override

 	protected String getBranch(String repository, HttpServletRequest request) {

 		return "gh-pages";

diff --git a/src/main/java/com/gitblit/servlet/ProxyFilter.java b/src/main/java/com/gitblit/servlet/ProxyFilter.java
index 46f59de..778c818 100644
--- a/src/main/java/com/gitblit/servlet/ProxyFilter.java
+++ b/src/main/java/com/gitblit/servlet/ProxyFilter.java
@@ -16,9 +16,13 @@
 package com.gitblit.servlet;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
@@ -27,13 +31,10 @@
 
 import ro.fortsoft.pf4j.PluginWrapper;
 
-import com.gitblit.dagger.DaggerFilter;
 import com.gitblit.extensions.HttpRequestFilter;
 import com.gitblit.manager.IPluginManager;
 import com.gitblit.manager.IRuntimeManager;
 
-import dagger.ObjectGraph;
-
 /**
  * A request filter than allows registered extension request filters to access
  * request data.  The intended purpose is for server monitoring plugins.
@@ -41,15 +42,29 @@
  * @author David Ostrovsky
  * @since 1.6.0
  */
-public class ProxyFilter extends DaggerFilter {
-	private List<HttpRequestFilter> filters;
+@Singleton
+public class ProxyFilter implements Filter {
+	private final IRuntimeManager runtimeManager;
+
+	private final IPluginManager pluginManager;
+
+	private final List<HttpRequestFilter> filters;
+
+	@Inject
+	public ProxyFilter(
+			IRuntimeManager runtimeManager,
+			IPluginManager pluginManager) {
+
+		this.runtimeManager = runtimeManager;
+		this.pluginManager = pluginManager;
+		this.filters = new ArrayList<>();
+
+	}
 
 	@Override
-	protected void inject(ObjectGraph dagger, FilterConfig filterConfig) throws ServletException {
-		IRuntimeManager runtimeManager = dagger.get(IRuntimeManager.class);
-		IPluginManager pluginManager = dagger.get(IPluginManager.class);
+	public void init(FilterConfig filterConfig) throws ServletException {
 
-		filters = pluginManager.getExtensions(HttpRequestFilter.class);
+		filters.addAll(pluginManager.getExtensions(HttpRequestFilter.class));
 		for (HttpRequestFilter f : filters) {
 			// wrap the filter config for Gitblit settings retrieval
 			PluginWrapper pluginWrapper = pluginManager.whichPlugin(f.getClass());
diff --git a/src/main/java/com/gitblit/servlet/PtServlet.java b/src/main/java/com/gitblit/servlet/PtServlet.java
index e9cbaa5..65d3de1 100644
--- a/src/main/java/com/gitblit/servlet/PtServlet.java
+++ b/src/main/java/com/gitblit/servlet/PtServlet.java
@@ -21,7 +21,10 @@
 import java.io.InputStream;

 import java.io.OutputStream;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

@@ -34,11 +37,8 @@
 import org.apache.wicket.util.io.ByteArrayOutputStream;

 import org.eclipse.jgit.lib.FileMode;

 

-import com.gitblit.dagger.DaggerServlet;

 import com.gitblit.manager.IRuntimeManager;

 

-import dagger.ObjectGraph;

-

 /**

  * Handles requests for the Barnum pt (patchset tool).

  *

@@ -47,7 +47,8 @@
  * @author James Moger

  *

  */

-public class PtServlet extends DaggerServlet {

+@Singleton

+public class PtServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

@@ -55,9 +56,9 @@
 

 	private IRuntimeManager runtimeManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.runtimeManager = dagger.get(IRuntimeManager.class);

+	@Inject

+	public PtServlet(IRuntimeManager runtimeManager) {

+		this.runtimeManager = runtimeManager;

 	}

 

 	@Override

diff --git a/src/main/java/com/gitblit/servlet/RawFilter.java b/src/main/java/com/gitblit/servlet/RawFilter.java
index 34989c9..7dddd9b 100644
--- a/src/main/java/com/gitblit/servlet/RawFilter.java
+++ b/src/main/java/com/gitblit/servlet/RawFilter.java
@@ -15,9 +15,15 @@
  */

 package com.gitblit.servlet;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

+

 import org.eclipse.jgit.lib.Repository;

 

 import com.gitblit.Constants.AccessRestrictionType;

+import com.gitblit.manager.IAuthenticationManager;

+import com.gitblit.manager.IRepositoryManager;

+import com.gitblit.manager.IRuntimeManager;

 import com.gitblit.models.RepositoryModel;

 import com.gitblit.models.UserModel;

 

@@ -28,8 +34,18 @@
  * @author James Moger

  *

  */

+@Singleton

 public class RawFilter extends AccessRestrictionFilter {

 

+	@Inject

+	public RawFilter(

+			IRuntimeManager runtimeManager,

+			IAuthenticationManager authenticationManager,

+			IRepositoryManager repositoryManager) {

+

+		super(runtimeManager, authenticationManager, repositoryManager);

+	}

+

 	/**

 	 * Extract the repository name from the url.

 	 *

diff --git a/src/main/java/com/gitblit/servlet/RawServlet.java b/src/main/java/com/gitblit/servlet/RawServlet.java
index 0def062..d856ef8 100644
--- a/src/main/java/com/gitblit/servlet/RawServlet.java
+++ b/src/main/java/com/gitblit/servlet/RawServlet.java
@@ -28,8 +28,11 @@
 import java.util.Map;
 import java.util.TreeMap;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -48,7 +51,6 @@
 
 import com.gitblit.Constants;
 import com.gitblit.Keys;
-import com.gitblit.dagger.DaggerServlet;
 import com.gitblit.manager.IRepositoryManager;
 import com.gitblit.manager.IRuntimeManager;
 import com.gitblit.models.PathModel;
@@ -57,28 +59,30 @@
 import com.gitblit.utils.MarkdownUtils;
 import com.gitblit.utils.StringUtils;
 
-import dagger.ObjectGraph;
-
 /**
  * Serves the content of a branch.
  *
  * @author James Moger
  *
  */
-public class RawServlet extends DaggerServlet {
+@Singleton
+public class RawServlet extends HttpServlet {
 
 	private static final long serialVersionUID = 1L;
 
 	private transient Logger logger = LoggerFactory.getLogger(RawServlet.class);
 
-	private IRuntimeManager runtimeManager;
+	private final IRuntimeManager runtimeManager;
 
-	private IRepositoryManager repositoryManager;
+	private final IRepositoryManager repositoryManager;
 
-	@Override
-	protected void inject(ObjectGraph dagger) {
-		this.runtimeManager = dagger.get(IRuntimeManager.class);
-		this.repositoryManager = dagger.get(IRepositoryManager.class);
+	@Inject
+	public RawServlet(
+			IRuntimeManager runtimeManager,
+			IRepositoryManager repositoryManager) {
+
+		this.runtimeManager = runtimeManager;
+		this.repositoryManager = repositoryManager;
 	}
 
 	/**
diff --git a/src/main/java/com/gitblit/servlet/RobotsTxtServlet.java b/src/main/java/com/gitblit/servlet/RobotsTxtServlet.java
index 9bd3b3c..e08c6bb 100644
--- a/src/main/java/com/gitblit/servlet/RobotsTxtServlet.java
+++ b/src/main/java/com/gitblit/servlet/RobotsTxtServlet.java
@@ -18,32 +18,33 @@
 import java.io.File;

 import java.io.IOException;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

 import com.gitblit.Keys;

-import com.gitblit.dagger.DaggerServlet;

 import com.gitblit.manager.IRuntimeManager;

 import com.gitblit.utils.FileUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * Handles requests for robots.txt

  *

  * @author James Moger

  *

  */

-public class RobotsTxtServlet extends DaggerServlet {

+@Singleton

+public class RobotsTxtServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

 	private IRuntimeManager runtimeManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.runtimeManager = dagger.get(IRuntimeManager.class);

+	@Inject

+	public RobotsTxtServlet(IRuntimeManager runtimeManager) {

+		this.runtimeManager = runtimeManager;

 	}

 

 	@Override

diff --git a/src/main/java/com/gitblit/servlet/RpcFilter.java b/src/main/java/com/gitblit/servlet/RpcFilter.java
index 23bf956..73f9dcb 100644
--- a/src/main/java/com/gitblit/servlet/RpcFilter.java
+++ b/src/main/java/com/gitblit/servlet/RpcFilter.java
@@ -18,8 +18,9 @@
 import java.io.IOException;

 import java.text.MessageFormat;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.FilterChain;

-import javax.servlet.FilterConfig;

 import javax.servlet.ServletException;

 import javax.servlet.ServletRequest;

 import javax.servlet.ServletResponse;

@@ -29,11 +30,10 @@
 import com.gitblit.Constants.RpcRequest;

 import com.gitblit.IStoredSettings;

 import com.gitblit.Keys;

+import com.gitblit.manager.IAuthenticationManager;

 import com.gitblit.manager.IRuntimeManager;

 import com.gitblit.models.UserModel;

 

-import dagger.ObjectGraph;

-

 /**

  * The RpcFilter is a servlet filter that secures the RpcServlet.

  *

@@ -47,17 +47,23 @@
  * @author James Moger

  *

  */

+@Singleton

 public class RpcFilter extends AuthenticationFilter {

 

 	private IStoredSettings settings;

 

 	private IRuntimeManager runtimeManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger, FilterConfig filterConfig) {

-		super.inject(dagger, filterConfig);

-		this.settings = dagger.get(IStoredSettings.class);

-		this.runtimeManager = dagger.get(IRuntimeManager.class);

+	@Inject

+	public RpcFilter(

+			IStoredSettings settings,

+			IRuntimeManager runtimeManager,

+			IAuthenticationManager authenticationManager) {

+

+		super(authenticationManager);

+

+		this.settings = settings;

+		this.runtimeManager = runtimeManager;

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/servlet/RpcServlet.java b/src/main/java/com/gitblit/servlet/RpcServlet.java
index b8cdfb0..aaf7d5f 100644
--- a/src/main/java/com/gitblit/servlet/RpcServlet.java
+++ b/src/main/java/com/gitblit/servlet/RpcServlet.java
@@ -23,6 +23,8 @@
 import java.util.List;

 import java.util.Map;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.ServletException;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

@@ -47,13 +49,12 @@
 import com.gitblit.utils.RpcUtils;

 import com.gitblit.utils.StringUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * Handles remote procedure calls.

  *

  * @author James Moger

  */

+@Singleton

 public class RpcServlet extends JsonServlet {

 

 	private static final long serialVersionUID = 1L;

@@ -64,10 +65,10 @@
 

 	private IGitblit gitblit;

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.settings = dagger.get(IStoredSettings.class);

-		this.gitblit = dagger.get(IGitblit.class);

+	@Inject

+	public RpcServlet(IStoredSettings settings, IGitblit gitblit) {

+		this.settings = settings;

+		this.gitblit = gitblit;

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java b/src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java
index 150dd68..e596cfd 100644
--- a/src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java
+++ b/src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java
@@ -19,13 +19,15 @@
 import java.net.URL;

 import java.text.MessageFormat;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

 import com.gitblit.IStoredSettings;

 import com.gitblit.Keys;

-import com.gitblit.dagger.DaggerServlet;

 import com.gitblit.manager.IAuthenticationManager;

 import com.gitblit.manager.IRepositoryManager;

 import com.gitblit.manager.IUserManager;

@@ -33,15 +35,14 @@
 import com.gitblit.models.UserModel;

 import com.gitblit.utils.StringUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * Handles requests for Sparkleshare Invites

  *

  * @author James Moger

  *

  */

-public class SparkleShareInviteServlet extends DaggerServlet {

+@Singleton

+public class SparkleShareInviteServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

@@ -53,12 +54,17 @@
 

 	private IRepositoryManager repositoryManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.settings = dagger.get(IStoredSettings.class);

-		this.userManager = dagger.get(IUserManager.class);

-		this.authenticationManager = dagger.get(IAuthenticationManager.class);

-		this.repositoryManager = dagger.get(IRepositoryManager.class);

+	@Inject

+	public SparkleShareInviteServlet(

+			IStoredSettings settings,

+			IUserManager userManager,

+			IAuthenticationManager authenticationManager,

+			IRepositoryManager repositoryManager) {

+

+		this.settings = settings;

+		this.userManager = userManager;

+		this.authenticationManager = authenticationManager;

+		this.repositoryManager = repositoryManager;

 	}

 

 	@Override

diff --git a/src/main/java/com/gitblit/servlet/SyndicationFilter.java b/src/main/java/com/gitblit/servlet/SyndicationFilter.java
index 78da47e..3b9753f 100644
--- a/src/main/java/com/gitblit/servlet/SyndicationFilter.java
+++ b/src/main/java/com/gitblit/servlet/SyndicationFilter.java
@@ -18,8 +18,9 @@
 import java.io.IOException;

 import java.text.MessageFormat;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.FilterChain;

-import javax.servlet.FilterConfig;

 import javax.servlet.ServletException;

 import javax.servlet.ServletRequest;

 import javax.servlet.ServletResponse;

@@ -27,6 +28,7 @@
 import javax.servlet.http.HttpServletResponse;

 

 import com.gitblit.Constants.AccessRestrictionType;

+import com.gitblit.manager.IAuthenticationManager;

 import com.gitblit.manager.IProjectManager;

 import com.gitblit.manager.IRepositoryManager;

 import com.gitblit.manager.IRuntimeManager;

@@ -34,8 +36,6 @@
 import com.gitblit.models.RepositoryModel;

 import com.gitblit.models.UserModel;

 

-import dagger.ObjectGraph;

-

 /**

  * The SyndicationFilter is an AuthenticationFilter which ensures that feed

  * requests for projects or view-restricted repositories have proper authentication

@@ -44,18 +44,24 @@
  * @author James Moger

  *

  */

+@Singleton

 public class SyndicationFilter extends AuthenticationFilter {

 

 	private IRuntimeManager runtimeManager;

 	private IRepositoryManager repositoryManager;

 	private IProjectManager projectManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger, FilterConfig filterConfig) {

-		super.inject(dagger, filterConfig);

-		this.runtimeManager = dagger.get(IRuntimeManager.class);

-		this.repositoryManager = dagger.get(IRepositoryManager.class);

-		this.projectManager = dagger.get(IProjectManager.class);

+	@Inject

+	public SyndicationFilter(

+			IRuntimeManager runtimeManager,

+			IAuthenticationManager authenticationManager,

+			IRepositoryManager repositoryManager,

+			IProjectManager projectManager) {

+		super(authenticationManager);

+

+		this.runtimeManager = runtimeManager;

+		this.repositoryManager = repositoryManager;

+		this.projectManager = projectManager;

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/servlet/SyndicationServlet.java b/src/main/java/com/gitblit/servlet/SyndicationServlet.java
index 631df78..c48f25f 100644
--- a/src/main/java/com/gitblit/servlet/SyndicationServlet.java
+++ b/src/main/java/com/gitblit/servlet/SyndicationServlet.java
@@ -22,6 +22,10 @@
 import java.util.List;

 import java.util.Map;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

+import javax.servlet.http.HttpServlet;

+

 import org.eclipse.jgit.lib.ObjectId;

 import org.eclipse.jgit.lib.Repository;

 import org.eclipse.jgit.revwalk.RevCommit;

@@ -31,7 +35,6 @@
 import com.gitblit.Constants;

 import com.gitblit.IStoredSettings;

 import com.gitblit.Keys;

-import com.gitblit.dagger.DaggerServlet;

 import com.gitblit.manager.IProjectManager;

 import com.gitblit.manager.IRepositoryManager;

 import com.gitblit.models.FeedEntryModel;

@@ -46,8 +49,6 @@
 import com.gitblit.utils.StringUtils;

 import com.gitblit.utils.SyndicationUtils;

 

-import dagger.ObjectGraph;

-

 /**

  * SyndicationServlet generates RSS 2.0 feeds and feed links.

  *

@@ -56,7 +57,8 @@
  * @author James Moger

  *

  */

-public class SyndicationServlet extends DaggerServlet {

+@Singleton

+public class SyndicationServlet extends HttpServlet {

 

 	private static final long serialVersionUID = 1L;

 

@@ -68,11 +70,15 @@
 

 	private IProjectManager projectManager;

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.settings = dagger.get(IStoredSettings.class);

-		this.repositoryManager = dagger.get(IRepositoryManager.class);

-		this.projectManager = dagger.get(IProjectManager.class);

+	@Inject

+	public SyndicationServlet(

+			IStoredSettings settings,

+			IRepositoryManager repositoryManager,

+			IProjectManager projectManager) {

+

+		this.settings = settings;

+		this.repositoryManager = repositoryManager;

+		this.projectManager = projectManager;

 	}

 

 	/**

diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
index f63ff3d..e5b6550 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -21,6 +21,9 @@
 import java.util.Map;
 import java.util.TimeZone;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
 import org.apache.wicket.Application;
 import org.apache.wicket.Request;
 import org.apache.wicket.Response;
@@ -90,6 +93,7 @@
 import com.gitblit.wicket.pages.UserPage;
 import com.gitblit.wicket.pages.UsersPage;
 
+@Singleton
 public class GitBlitWebApp extends WebApplication implements GitblitWicketApp {
 
 	private final Class<? extends WebPage> homePageClass = MyDashboardPage.class;
@@ -120,6 +124,7 @@
 
 	private final IGitblit gitblit;
 
+	@Inject
 	public GitBlitWebApp(
 			IRuntimeManager runtimeManager,
 			IPluginManager pluginManager,
diff --git a/src/main/java/com/gitblit/wicket/GitblitWicketFilter.java b/src/main/java/com/gitblit/wicket/GitblitWicketFilter.java
index 7865fb3..72adbf5 100644
--- a/src/main/java/com/gitblit/wicket/GitblitWicketFilter.java
+++ b/src/main/java/com/gitblit/wicket/GitblitWicketFilter.java
@@ -17,6 +17,8 @@
 

 import java.util.Date;

 

+import javax.inject.Inject;

+import javax.inject.Singleton;

 import javax.servlet.http.HttpServletRequest;

 

 import org.apache.wicket.protocol.http.IWebApplicationFactory;

@@ -28,7 +30,6 @@
 

 import com.gitblit.IStoredSettings;

 import com.gitblit.Keys;

-import com.gitblit.dagger.DaggerWicketFilter;

 import com.gitblit.manager.IProjectManager;

 import com.gitblit.manager.IRepositoryManager;

 import com.gitblit.manager.IRuntimeManager;

@@ -37,8 +38,6 @@
 import com.gitblit.utils.JGitUtils;

 import com.gitblit.utils.StringUtils;

 

-import dagger.ObjectGraph;

-

 /**

  *

  * Customization of the WicketFilter to allow smart browser-side caching of

@@ -47,7 +46,8 @@
  * @author James Moger

  *

  */

-public class GitblitWicketFilter extends DaggerWicketFilter {

+@Singleton

+public class GitblitWicketFilter extends WicketFilter {

 

 	private IStoredSettings settings;

 

@@ -59,13 +59,19 @@
 

 	private GitBlitWebApp webapp;

 

-	@Override

-	protected void inject(ObjectGraph dagger) {

-		this.settings = dagger.get(IStoredSettings.class);

-		this.runtimeManager = dagger.get(IRuntimeManager.class);

-		this.repositoryManager = dagger.get(IRepositoryManager.class);

-		this.projectManager = dagger.get(IProjectManager.class);

-		this.webapp = dagger.get(GitBlitWebApp.class);

+	@Inject

+	public GitblitWicketFilter(

+			IStoredSettings settings,

+			IRuntimeManager runtimeManager,

+			IRepositoryManager repositoryManager,

+			IProjectManager projectManager,

+			GitBlitWebApp webapp) {

+

+		this.settings = settings;

+		this.runtimeManager = runtimeManager;

+		this.repositoryManager = repositoryManager;

+		this.projectManager = projectManager;

+		this.webapp = webapp;

 	}

 

 	@Override