diff --git a/scm-core/src/main/java/sonia/scm/group/GroupNames.java b/scm-core/src/main/java/sonia/scm/group/GroupNames.java index 3aae0c5c4c..43a1ffda43 100644 --- a/scm-core/src/main/java/sonia/scm/group/GroupNames.java +++ b/scm-core/src/main/java/sonia/scm/group/GroupNames.java @@ -70,10 +70,9 @@ public final class GroupNames implements Serializable, Iterable * Constructs ... * */ - @SuppressWarnings("unchecked") public GroupNames() { - this(Collections.EMPTY_LIST); + this(Collections.emptyList()); } /** diff --git a/scm-core/src/main/java/sonia/scm/security/SyncingRealmHelper.java b/scm-core/src/main/java/sonia/scm/security/SyncingRealmHelper.java index b37ac4adc3..d54abcff58 100644 --- a/scm-core/src/main/java/sonia/scm/security/SyncingRealmHelper.java +++ b/scm-core/src/main/java/sonia/scm/security/SyncingRealmHelper.java @@ -80,6 +80,49 @@ public final class SyncingRealmHelper { this.groupManager = groupManager; } + public AuthenticationInfoBuilder.ForRealm authenticationInfo() { + return new AuthenticationInfoBuilder().new ForRealm(); + } + + public class AuthenticationInfoBuilder { + private String realm; + private User user; + private Collection groups; + private boolean external; + + private AuthenticationInfo build() { + return SyncingRealmHelper.this.createAuthenticationInfo(realm, user, groups, external); + } + + public class ForRealm { + public ForUser forRealm(String realm) { + AuthenticationInfoBuilder.this.realm = realm; + return AuthenticationInfoBuilder.this.new ForUser(); + } + } + + public class ForUser { + public AuthenticationInfoBuilder.WithGroups andUser(User user) { + AuthenticationInfoBuilder.this.user = user; + return AuthenticationInfoBuilder.this.new WithGroups(); + } + } + + public class WithGroups { + public AuthenticationInfo withGroups(Collection groups) { + AuthenticationInfoBuilder.this.groups = groups; + AuthenticationInfoBuilder.this.external = false; + return build(); + } + + public AuthenticationInfo withExternalGroups(Collection groups) { + AuthenticationInfoBuilder.this.groups = groups; + AuthenticationInfoBuilder.this.external = false; + return build(); + } + } + } + //~--- methods -------------------------------------------------------------- /** * Create {@link AuthenticationInfo} from user and groups. @@ -176,6 +219,6 @@ public final class SyncingRealmHelper { } } - }); - } + }); } +}