From 1b34b05f5b8d2d0fd51819b286e22d7ddd27cb27 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 03 Jul 2014 16:20:37 -0400
Subject: [PATCH] Embrace @Inject for Managers, Servlets, and Filters

---
 src/main/java/com/gitblit/manager/UserManager.java                 |    3 
 src/main/java/com/gitblit/servlet/PagesFilter.java                 |   17 +
 src/main/java/com/gitblit/wicket/GitBlitWebApp.java                |    5 
 src/main/java/com/gitblit/servlet/LogoServlet.java                 |   15 
 src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java     |   18 
 src/main/java/com/gitblit/manager/RuntimeManager.java              |    3 
 src/main/java/com/gitblit/servlet/FederationServlet.java           |   22 
 src/main/java/com/gitblit/servlet/SyndicationFilter.java           |   24 
 src/main/java/com/gitblit/manager/ProjectManager.java              |    3 
 src/main/java/com/gitblit/manager/PluginManager.java               |    3 
 src/main/java/com/gitblit/manager/FederationManager.java           |    2 
 src/main/java/com/gitblit/servlet/GitServlet.java                  |   18 
 src/main/java/com/gitblit/manager/RepositoryManager.java           |    3 
 src/main/java/com/gitblit/servlet/JsonServlet.java                 |    4 
 src/main/java/com/gitblit/manager/NotificationManager.java         |    2 
 src/main/java/com/gitblit/servlet/RawFilter.java                   |   16 +
 src/main/java/com/gitblit/servlet/RpcServlet.java                  |   13 
 src/main/java/com/gitblit/servlet/BranchGraphServlet.java          |   25 
 src/main/java/com/gitblit/GitBlit.java                             |    2 
 src/main/java/com/gitblit/servlet/PagesServlet.java                |   13 
 src/main/java/com/gitblit/servlet/RpcFilter.java                   |   22 
 src/main/java/com/gitblit/wicket/GitblitWicketFilter.java          |   28 +
 src/main/java/com/gitblit/servlet/ProxyFilter.java                 |   33 +
 src/main/java/com/gitblit/servlet/GitFilter.java                   |   26 +
 src/main/java/com/gitblit/servlet/PtServlet.java                   |   15 
 src/main/java/com/gitblit/servlet/SparkleShareInviteServlet.java   |   26 +
 /dev/null                                                          |   45 --
 src/main/java/com/gitblit/servlet/EnforceAuthenticationFilter.java |   34 +
 src/main/java/com/gitblit/servlet/SyndicationServlet.java          |   24 
 src/main/java/com/gitblit/DaggerModule.java                        |  395 +-----------------------
 src/main/java/com/gitblit/servlet/AuthenticationFilter.java        |   17 
 src/main/java/com/gitblit/manager/AuthenticationManager.java       |    2 
 src/main/java/com/gitblit/servlet/RawServlet.java                  |   24 
 src/main/java/com/gitblit/servlet/DownloadZipFilter.java           |   16 +
 src/main/java/com/gitblit/servlet/RobotsTxtServlet.java            |   15 
 src/main/java/com/gitblit/servlet/DownloadZipServlet.java          |   17 
 36 files changed, 358 insertions(+), 592 deletions(-)

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,20 +19,18 @@
 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
@@ -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,13 +36,10 @@
 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
@@ -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,12 +55,9 @@
 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
@@ -65,7 +65,8 @@
  * @author James Moger
  *
  */
-public class BranchGraphServlet extends DaggerServlet {
+@Singleton
+public class BranchGraphServlet extends HttpServlet {
 
 	private static final long serialVersionUID = 1L;
 
@@ -82,18 +83,18 @@
 
 	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);
 	}
 
 	/**
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,14 +34,11 @@
 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
@@ -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,11 +34,8 @@
 
 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.
@@ -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() {
 	}
 
 	/*
@@ -86,13 +98,5 @@
 			// user is authenticated, or don't care, continue handling
 			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,12 +26,13 @@
 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
@@ -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,13 +35,10 @@
 
 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.
@@ -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,16 +21,16 @@
 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
@@ -38,7 +38,8 @@
  * @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,12 +31,9 @@
 
 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
@@ -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,10 +37,7 @@
 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,16 +18,16 @@
 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
@@ -35,15 +35,16 @@
  * @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,10 +30,9 @@
 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,14 +28,13 @@
 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;
 import com.gitblit.models.ProjectModel;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.UserModel;
-
-import dagger.ObjectGraph;
 
 /**
  * The SyndicationFilter is an AuthenticationFilter which ensures that feed
@@ -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;
@@ -36,8 +37,6 @@
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.StringUtils;
-
-import dagger.ObjectGraph;
 
 /**
  *
@@ -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

--
Gitblit v1.9.1