From 7bf6e183ff8abd0c35eeb29f399da12389562ecb Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 29 Nov 2013 11:05:51 -0500
Subject: [PATCH] Moved servlets and services to separate packages

---
 src/main/java/com/gitblit/GitblitUserService.java |   72 ++++++++++++++---------------------
 1 files changed, 29 insertions(+), 43 deletions(-)

diff --git a/src/main/java/com/gitblit/GitblitUserService.java b/src/main/java/com/gitblit/GitblitUserService.java
index fe35db9..715aed9 100644
--- a/src/main/java/com/gitblit/GitblitUserService.java
+++ b/src/main/java/com/gitblit/GitblitUserService.java
@@ -25,6 +25,7 @@
 import org.slf4j.LoggerFactory;
 
 import com.gitblit.Constants.AccountType;
+import com.gitblit.manager.IRuntimeManager;
 import com.gitblit.models.TeamModel;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.DeepCopier;
@@ -33,26 +34,24 @@
 /**
  * This class wraps the default user service and is recommended as the starting
  * point for custom user service implementations.
- * 
+ *
  * This does seem a little convoluted, but the idea is to allow IUserService to
  * evolve with new methods and implementations without breaking custom
  * authentication implementations.
- * 
+ *
  * The most common implementation of a custom IUserService is to only override
  * authentication and then delegate all other functionality to one of Gitblit's
  * user services. This class optimizes that use-case.
- * 
+ *
  * Extending GitblitUserService allows for authentication customization without
  * having to keep-up-with IUSerService API changes.
- * 
+ *
  * @author James Moger
- * 
+ *
  */
 public class GitblitUserService implements IUserService {
 
 	protected IUserService serviceImpl;
-	
-	protected final String ExternalAccount = "#externalAccount";
 
 	private final Logger logger = LoggerFactory.getLogger(GitblitUserService.class);
 
@@ -60,19 +59,15 @@
 	}
 
 	@Override
-	public void setup(IStoredSettings settings) {
-		File realmFile = GitBlit.getFileOrFolder(Keys.realm.userService, "${baseFolder}/users.conf");
+	public void setup(IRuntimeManager runtimeManager) {
+		File realmFile = runtimeManager.getFileOrFolder(Keys.realm.userService, "${baseFolder}/users.conf");
 		serviceImpl = createUserService(realmFile);
 		logger.info("GUS delegating to " + serviceImpl.toString());
 	}
 
-	@SuppressWarnings("deprecation")
 	protected IUserService createUserService(File realmFile) {
 		IUserService service = null;
-		if (realmFile.getName().toLowerCase().endsWith(".properties")) {
-			// v0.5.0 - v0.7.0 properties-based realm file
-			service = new FileUserService(realmFile);
-		} else if (realmFile.getName().toLowerCase().endsWith(".conf")) {
+		if (realmFile.getName().toLowerCase().endsWith(".conf")) {
 			// v0.8.0+ config-based realm file
 			service = new ConfigUserService(realmFile);
 		}
@@ -93,25 +88,9 @@
 			service.updateUserModel(admin);
 		}
 
-		if (service instanceof FileUserService) {
-			// automatically create a users.conf realm file from the original
-			// users.properties file
-			File usersConfig = new File(realmFile.getParentFile(), "users.conf");
-			if (!usersConfig.exists()) {
-				logger.info(MessageFormat.format("Automatically creating {0} based on {1}",
-						usersConfig.getAbsolutePath(), realmFile.getAbsolutePath()));
-				ConfigUserService configService = new ConfigUserService(usersConfig);
-				for (String username : service.getAllUsernames()) {
-					UserModel userModel = service.getUserModel(username);
-					configService.updateUserModel(userModel);
-				}
-			}
-			// issue suggestion about switching to users.conf
-			logger.warn("Please consider using \"users.conf\" instead of the deprecated \"users.properties\" file");
-		}
 		return service;
 	}
-	
+
 	@Override
 	public String toString() {
 		return getClass().getSimpleName();
@@ -147,6 +126,12 @@
 		return serviceImpl.getCookie(model);
 	}
 
+	/**
+	 * Authenticate a user based on their cookie.
+	 *
+	 * @param cookie
+	 * @return a user object or null
+	 */
 	@Override
 	public UserModel authenticate(char[] cookie) {
 		UserModel user = serviceImpl.authenticate(cookie);
@@ -160,7 +145,7 @@
 		setAccountType(user);
 		return user;
 	}
-	
+
 	@Override
 	public void logout(UserModel user) {
 		serviceImpl.logout(user);
@@ -189,7 +174,7 @@
 			if (!model.isLocalAccount() && !supportsTeamMembershipChanges()) {
 				//  teams are externally controlled - copy from original model
 				UserModel existingModel = getUserModel(username);
-				
+
 				model = DeepCopier.copy(model);
 				model.teams.clear();
 				model.teams.addAll(existingModel.teams);
@@ -202,7 +187,7 @@
 			if (!model.isLocalAccount() && !supportsTeamMembershipChanges()) {
 				//  teams are externally controlled- copy from original model
 				UserModel existingModel = getUserModel(username);
-				
+
 				model = DeepCopier.copy(model);
 				model.teams.clear();
 				model.teams.addAll(existingModel.teams);
@@ -233,7 +218,7 @@
     	for (UserModel user : users) {
     		setAccountType(user);
     	}
-		return users; 
+		return users;
 	}
 
 	@Override
@@ -247,8 +232,8 @@
 	}
 
 	@Override
-	public List<String> getTeamnamesForRepositoryRole(String role) {
-		return serviceImpl.getTeamnamesForRepositoryRole(role);
+	public List<String> getTeamNamesForRepositoryRole(String role) {
+		return serviceImpl.getTeamNamesForRepositoryRole(role);
 	}
 
 	@Override
@@ -277,7 +262,7 @@
 		if (!supportsTeamMembershipChanges()) {
 			// teams are externally controlled - copy from original model
 			TeamModel existingModel = getTeamModel(teamname);
-			
+
 			model = DeepCopier.copy(model);
 			model.users.clear();
 			model.users.addAll(existingModel.users);
@@ -315,16 +300,16 @@
 	public boolean deleteRepositoryRole(String role) {
 		return serviceImpl.deleteRepositoryRole(role);
 	}
-	
+
 	protected boolean isLocalAccount(String username) {
 		UserModel user = getUserModel(username);
 		return user != null && user.isLocalAccount();
 	}
-	
+
 	protected void setAccountType(UserModel user) {
 		if (user != null) {
 			if (!StringUtils.isEmpty(user.password)
-					&& !ExternalAccount.equalsIgnoreCase(user.password)
+					&& !Constants.EXTERNAL_ACCOUNT.equalsIgnoreCase(user.password)
 					&& !"StoredInLDAP".equalsIgnoreCase(user.password)) {
 				user.accountType = AccountType.LOCAL;
 			} else {
@@ -332,8 +317,9 @@
 			}
 		}
 	}
-	
-	protected AccountType getAccountType() {
+
+	@Override
+	public AccountType getAccountType() {
 		return AccountType.LOCAL;
 	}
 }

--
Gitblit v1.9.1