]> source.dussan.org Git - gitblit.git/commitdiff
extracted method 1171/head
authorMartin Spielmann <martin.spielmann@pingunaut.com>
Fri, 6 Jan 2017 00:09:37 +0000 (01:09 +0100)
committerMartin Spielmann <martin.spielmann@pingunaut.com>
Fri, 6 Jan 2017 00:09:37 +0000 (01:09 +0100)
src/main/java/com/gitblit/manager/UserManager.java

index 2e68e40dbfe135a5bb2c29d28b034b0e2709dd1d..d661c9b425953be8e023058d38f2608d3ce96901 100644 (file)
@@ -121,15 +121,10 @@ public class UserManager implements IUserManager {
                                        // typical file path configuration
                                        File realmFile = runtimeManager.getFileOrFolder(Keys.realm.userService, "${baseFolder}/users.conf");
                                        service = createUserService(realmFile);
-                               } catch (InstantiationException | IllegalAccessException e1) {
-                                        logger.error("failed to instantiate user service {}: {}. Trying once again with IRuntimeManager constructor", realm, e1.getMessage());
-                                       //try once again with IRuntimeManager constructor. This adds support for subclasses of ConfigUserService and other custom IUserServices
-                                        try {
-                                            Constructor<?> constructor = Class.forName(realm).getConstructor(IRuntimeManager.class);
-                                            service = (IUserService) constructor.newInstance(runtimeManager);
-                                        } catch (NoSuchMethodException | SecurityException | ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e2) {
-                                            logger.error("failed to instantiate user service {}: {}", realm, e2.getMessage());
-                                        }
+                               } catch (InstantiationException | IllegalAccessException e) {
+                                       logger.error("failed to instantiate user service {}: {}. Trying once again with IRuntimeManager constructor", realm, e.getMessage());
+                                       //try once again with IRuntimeManager constructor. This adds support for subclasses of ConfigUserService and other custom IUserServices
+                                       service = createIRuntimeManagerAwareUserService(realm);
                                }
                        }
                        setUserService(service);
@@ -137,6 +132,22 @@ public class UserManager implements IUserManager {
                return this;
        }
 
+       /**
+        * Tries to create an {@link IUserService} with {@link #runtimeManager} as a constructor parameter
+        *
+        * @param realm the class name of the {@link IUserService} to be instantiated
+        * @return the {@link IUserService} or {@code null} if instantiation fails
+        */
+       private IUserService createIRuntimeManagerAwareUserService(String realm) {
+               try {
+                   Constructor<?> constructor = Class.forName(realm).getConstructor(IRuntimeManager.class);
+                   return (IUserService) constructor.newInstance(runtimeManager);
+               } catch (NoSuchMethodException | SecurityException | ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+                   logger.error("failed to instantiate user service {}: {}", realm, e.getMessage());
+                       return null;
+               }
+       }
+
        protected IUserService createUserService(File realmFile) {
                IUserService service = null;
                if (realmFile.getName().toLowerCase().endsWith(".conf")) {