From 008322bec70a3a20bd00ed2219215a9f42fe0ca5 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 08 Jun 2011 20:48:07 -0400
Subject: [PATCH] Blame support finished, requires JGit 1.0.0. Checkstyle. Findbugs.

---
 src/com/gitblit/JettyLoginService.java |   86 ++++++++++++++++++++++++++++++-------------
 1 files changed, 60 insertions(+), 26 deletions(-)

diff --git a/src/com/gitblit/JettyLoginService.java b/src/com/gitblit/JettyLoginService.java
index 231f174..63a9861 100644
--- a/src/com/gitblit/JettyLoginService.java
+++ b/src/com/gitblit/JettyLoginService.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.gitblit;
 
 import java.io.File;
@@ -23,7 +38,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.gitblit.wicket.models.UserModel;
+import com.gitblit.models.UserModel;
 
 public class JettyLoginService extends MappedLoginService implements ILoginService {
 
@@ -44,7 +59,7 @@
 			return null;
 		}
 		UserModel user = new UserModel(username);
-		user.canAdmin(identity.isUserInRole(Constants.ADMIN_ROLE, null));
+		user.canAdmin = identity.isUserInRole(Constants.ADMIN_ROLE, null);
 
 		// Add repositories
 		for (Principal principal : identity.getSubject().getPrincipals()) {
@@ -75,7 +90,7 @@
 				case '#':
 					// Permissions
 					if (name.equalsIgnoreCase(Constants.ADMIN_ROLE)) {
-						model.canAdmin(true);
+						model.canAdmin = true;
 					}
 					break;
 				default:
@@ -90,7 +105,7 @@
 			Properties allUsers = readRealmFile();
 			String value = allUsers.getProperty(username);
 			String password = value.split(",")[0];
-			model.setPassword(password);
+			model.password = password;
 		} catch (Throwable t) {
 			logger.error(MessageFormat.format("Failed to read password for user {0}!", username), t);
 		}
@@ -99,22 +114,22 @@
 
 	@Override
 	public boolean updateUserModel(UserModel model) {
-		return updateUserModel(model.getUsername(), model);
+		return updateUserModel(model.username, model);
 	}
-	
+
 	@Override
 	public boolean updateUserModel(String username, UserModel model) {
 		try {
 			Properties allUsers = readRealmFile();
-			ArrayList<String> roles = new ArrayList<String>(model.getRepositories());
+			ArrayList<String> roles = new ArrayList<String>(model.repositories);
 
 			// Permissions
-			if (model.canAdmin()) {
+			if (model.canAdmin) {
 				roles.add(Constants.ADMIN_ROLE);
 			}
 
 			StringBuilder sb = new StringBuilder();
-			sb.append(model.getPassword());
+			sb.append(model.password);
 			sb.append(',');
 			for (String role : roles) {
 				sb.append(role);
@@ -123,23 +138,25 @@
 			// trim trailing comma
 			sb.setLength(sb.length() - 1);
 			allUsers.remove(username);
-			allUsers.put(model.getUsername(), sb.toString());
+			allUsers.put(model.username, sb.toString());
 
 			writeRealmFile(allUsers);
 
 			// Update login service
 			removeUser(username);
-			putUser(model.getUsername(), Credential.getCredential(model.getPassword()), roles.toArray(new String[0]));
+			putUser(model.username, Credential.getCredential(model.password),
+					roles.toArray(new String[0]));
 			return true;
 		} catch (Throwable t) {
-			logger.error(MessageFormat.format("Failed to update user model {0}!", model.getUsername()), t);
+			logger.error(MessageFormat.format("Failed to update user model {0}!", model.username),
+					t);
 		}
 		return false;
 	}
 
 	@Override
 	public boolean deleteUserModel(UserModel model) {
-		return deleteUser(model.getUsername());
+		return deleteUser(model.username);
 	}
 
 	@Override
@@ -158,7 +175,7 @@
 		}
 		return false;
 	}
-	
+
 	@Override
 	public List<String> getAllUsernames() {
 		List<String> list = new ArrayList<String>();
@@ -220,7 +237,7 @@
 			// add roles to users
 			for (String user : needsAddRole) {
 				String userValues = allUsers.getProperty(user);
-				userValues += ("," + role);
+				userValues += "," + role;
 				allUsers.put(user, userValues);
 				String[] values = userValues.split(",");
 				String password = values[0];
@@ -252,7 +269,8 @@
 				allUsers.put(user, sb.toString());
 
 				// update memory
-				putUser(user, Credential.getCredential(password), revisedRoles.toArray(new String[0]));
+				putUser(user, Credential.getCredential(password),
+						revisedRoles.toArray(new String[0]));
 			}
 
 			// persist changes
@@ -309,14 +327,16 @@
 				allUsers.put(user, sb.toString());
 
 				// update memory
-				putUser(user, Credential.getCredential(password), revisedRoles.toArray(new String[0]));
+				putUser(user, Credential.getCredential(password),
+						revisedRoles.toArray(new String[0]));
 			}
 
 			// persist changes
 			writeRealmFile(allUsers);
 			return true;
 		} catch (Throwable t) {
-			logger.error(MessageFormat.format("Failed to rename role {0} to {1}!", oldRole, newRole), t);
+			logger.error(
+					MessageFormat.format("Failed to rename role {0} to {1}!", oldRole, newRole), t);
 		}
 		return false;
 	}
@@ -365,7 +385,8 @@
 				allUsers.put(user, sb.toString());
 
 				// update memory
-				putUser(user, Credential.getCredential(password), revisedRoles.toArray(new String[0]));
+				putUser(user, Credential.getCredential(password),
+						revisedRoles.toArray(new String[0]));
 			}
 
 			// persist changes
@@ -389,24 +410,36 @@
 		// Update realm file
 		File realmFileCopy = new File(realmFile.getAbsolutePath() + ".tmp");
 		FileWriter writer = new FileWriter(realmFileCopy);
-		properties.store(writer, "# Git:Blit realm file format: username=password,\\#permission,repository1,repository2...");
+		properties
+				.store(writer,
+						"# Git:Blit realm file format: username=password,\\#permission,repository1,repository2...");
 		writer.close();
 		if (realmFileCopy.exists() && realmFileCopy.length() > 0) {
-			realmFile.delete();
-			realmFileCopy.renameTo(realmFile);
+			if (realmFile.delete()) {
+				if (!realmFileCopy.renameTo(realmFile)) {
+					throw new IOException(MessageFormat.format("Failed to rename {0} to {1}!",
+							realmFileCopy.getAbsolutePath(), realmFile.getAbsolutePath()));
+				}
+			} else {
+				throw new IOException(MessageFormat.format("Failed to delete (0)!",
+						realmFile.getAbsolutePath()));
+			}
 		} else {
-			throw new IOException("Failed to save realmfile!");
+			throw new IOException(MessageFormat.format("Failed to save {0}!",
+					realmFileCopy.getAbsolutePath()));
 		}
 	}
 
 	/* ------------------------------------------------------------ */
 	@Override
 	public void loadUsers() throws IOException {
-		if (realmFile == null)
+		if (realmFile == null) {
 			return;
+		}
 
-		if (Log.isDebugEnabled())
+		if (Log.isDebugEnabled()) {
 			Log.debug("Load " + this + " from " + realmFile);
+		}
 		Properties allUsers = readRealmFile();
 
 		// Map Users
@@ -420,7 +453,8 @@
 				credentials = credentials.substring(0, c).trim();
 			}
 
-			if (username != null && username.length() > 0 && credentials != null && credentials.length() > 0) {
+			if (username != null && username.length() > 0 && credentials != null
+					&& credentials.length() > 0) {
 				String[] roleArray = IdentityService.NO_ROLES;
 				if (roles != null && roles.length() > 0) {
 					roleArray = roles.split(",");

--
Gitblit v1.9.1