Two slight improvement for custom UserService:
- try userRealm as a file only if class is not found, other exeptions are real error
- log userService only after setup, for better logging, as it can use gitblit.properties for custom .toString
diff --git a/src/main/java/com/gitblit/manager/UserManager.java b/src/main/java/com/gitblit/manager/UserManager.java
index 86be8bc..0d7ee9a 100644
--- a/src/main/java/com/gitblit/manager/UserManager.java
+++ b/src/main/java/com/gitblit/manager/UserManager.java
@@ -83,9 +83,9 @@
* @param userService
*/
public void setUserService(IUserService userService) {
- logger.info(userService.toString());
this.userService = userService;
this.userService.setup(runtimeManager);
+ logger.info(userService.toString());
}
@Override
@@ -115,10 +115,12 @@
// check to see if this "file" is a custom user service class
Class<?> realmClass = Class.forName(realm);
service = (IUserService) realmClass.newInstance();
- } catch (Throwable t) {
+ } catch (ClassNotFoundException t) {
// typical file path configuration
File realmFile = runtimeManager.getFileOrFolder(Keys.realm.userService, "${baseFolder}/users.conf");
service = createUserService(realmFile);
+ } catch (InstantiationException | IllegalAccessException e) {
+ logger.error("failed to instanciate user service {}: {}", realm, e.getMessage());
}
}
setUserService(service);