2020package org .apache .james .imap .api ;
2121
2222import java .time .Duration ;
23+ import java .util .List ;
2324import java .util .Map ;
2425import java .util .Optional ;
2526import java .util .Properties ;
3132import com .google .common .base .MoreObjects ;
3233import com .google .common .base .Objects ;
3334import com .google .common .base .Preconditions ;
35+ import com .google .common .collect .ImmutableList ;
3436import com .google .common .collect .ImmutableMap ;
3537import com .google .common .collect .ImmutableSet ;
3638
@@ -65,6 +67,7 @@ private static boolean noBlankString(String disableCap) {
6567 private Optional <Boolean > provisionDefaultMailboxes ;
6668 private Optional <Properties > customProperties ;
6769 private ImmutableSet <String > additionalConnectionChecks ;
70+ private ImmutableList <String > adminUsers ;
6871 private ImmutableMap <String , String > idFieldsResponse ;
6972
7073 private Builder () {
@@ -80,6 +83,7 @@ private Builder() {
8083 this .customProperties = Optional .empty ();
8184 this .additionalConnectionChecks = ImmutableSet .of ();
8285 this .idFieldsResponse = ImmutableMap .of ();
86+ this .adminUsers = ImmutableList .of ();
8387 }
8488
8589 public Builder idleTimeInterval (long idleTimeInterval ) {
@@ -114,6 +118,11 @@ public Builder disabledCaps(ImmutableSet<String> disabledCaps) {
114118 return this ;
115119 }
116120
121+ public Builder adminUsers (ImmutableList <String > adminUsers ) {
122+ this .adminUsers = adminUsers ;
123+ return this ;
124+ }
125+
117126 public Builder disabledCaps (String ... disableCaps ) {
118127 this .disabledCaps = ImmutableSet .copyOf (disableCaps );
119128 return this ;
@@ -166,23 +175,25 @@ public Builder idFieldsResponse(ImmutableMap<String, String> idFieldsResponse) {
166175
167176 public ImapConfiguration build () {
168177 ImmutableSet <Capability > normalizeDisableCaps = disabledCaps .stream ()
169- .filter (Builder ::noBlankString )
170- .map (StringUtils ::normalizeSpace )
171- .map (Capability ::of )
172- .collect (ImmutableSet .toImmutableSet ());
178+ .filter (Builder ::noBlankString )
179+ .map (StringUtils ::normalizeSpace )
180+ .map (Capability ::of )
181+ .collect (ImmutableSet .toImmutableSet ());
182+
173183 return new ImapConfiguration (
174- appendLimit ,
175- enableIdle .orElse (DEFAULT_ENABLE_IDLE ),
176- idleTimeInterval .orElse (DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS ),
177- concurrentRequests .orElse (DEFAULT_CONCURRENT_REQUESTS ),
178- maxQueueSize .orElse (DEFAULT_QUEUE_SIZE ),
179- idleTimeIntervalUnit .orElse (DEFAULT_HEARTBEAT_INTERVAL_UNIT ),
180- normalizeDisableCaps ,
181- isCondstoreEnable .orElse (DEFAULT_CONDSTORE_DISABLE ),
182- provisionDefaultMailboxes .orElse (DEFAULT_PROVISION_DEFAULT_MAILBOXES ),
183- customProperties .orElseGet (Properties ::new ),
184- additionalConnectionChecks ,
185- idFieldsResponse );
184+ appendLimit ,
185+ enableIdle .orElse (DEFAULT_ENABLE_IDLE ),
186+ idleTimeInterval .orElse (DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS ),
187+ concurrentRequests .orElse (DEFAULT_CONCURRENT_REQUESTS ),
188+ maxQueueSize .orElse (DEFAULT_QUEUE_SIZE ),
189+ idleTimeIntervalUnit .orElse (DEFAULT_HEARTBEAT_INTERVAL_UNIT ),
190+ normalizeDisableCaps ,
191+ isCondstoreEnable .orElse (DEFAULT_CONDSTORE_DISABLE ),
192+ provisionDefaultMailboxes .orElse (DEFAULT_PROVISION_DEFAULT_MAILBOXES ),
193+ customProperties .orElseGet (Properties ::new ),
194+ additionalConnectionChecks ,
195+ adminUsers ,
196+ idFieldsResponse );
186197 }
187198 }
188199
@@ -197,6 +208,7 @@ public ImapConfiguration build() {
197208 private final boolean provisionDefaultMailboxes ;
198209 private final Properties customProperties ;
199210 private final ImmutableSet <String > additionalConnectionChecks ;
211+ private final List <String > adminUsers ;
200212 private final ImmutableMap <String , String > idFieldsResponse ;
201213
202214 private ImapConfiguration (Optional <Long > appendLimit ,
@@ -210,6 +222,7 @@ private ImapConfiguration(Optional<Long> appendLimit,
210222 boolean provisionDefaultMailboxes ,
211223 Properties customProperties ,
212224 ImmutableSet <String > additionalConnectionChecks ,
225+ List <String > adminUsers ,
213226 ImmutableMap <String , String > idFieldsResponse ) {
214227 this .appendLimit = appendLimit ;
215228 this .enableIdle = enableIdle ;
@@ -222,6 +235,7 @@ private ImapConfiguration(Optional<Long> appendLimit,
222235 this .provisionDefaultMailboxes = provisionDefaultMailboxes ;
223236 this .customProperties = customProperties ;
224237 this .additionalConnectionChecks = additionalConnectionChecks ;
238+ this .adminUsers = adminUsers ;
225239 this .idFieldsResponse = idFieldsResponse ;
226240 }
227241
@@ -277,6 +291,10 @@ public ImmutableMap<String, String> getIdFieldsResponse() {
277291 return idFieldsResponse ;
278292 }
279293
294+ public List <String > getAdminUsers () {
295+ return adminUsers ;
296+ }
297+
280298 @ Override
281299 public final boolean equals (Object obj ) {
282300 if (obj instanceof ImapConfiguration that ) {
@@ -291,7 +309,8 @@ public final boolean equals(Object obj) {
291309 && Objects .equal (that .getCustomProperties (), customProperties )
292310 && Objects .equal (that .isCondstoreEnable (), isCondstoreEnable )
293311 && Objects .equal (that .getAdditionalConnectionChecks (), additionalConnectionChecks )
294- && Objects .equal (that .getIdFieldsResponse (), idFieldsResponse );
312+ && Objects .equal (that .getIdFieldsResponse (), idFieldsResponse )
313+ && Objects .equal (that .getAdminUsers (), adminUsers );
295314 }
296315 return false ;
297316 }
@@ -300,7 +319,7 @@ public final boolean equals(Object obj) {
300319 public final int hashCode () {
301320 return Objects .hashCode (enableIdle , idleTimeInterval , idleTimeIntervalUnit , disabledCaps , isCondstoreEnable ,
302321 concurrentRequests , maxQueueSize , appendLimit , provisionDefaultMailboxes , customProperties , additionalConnectionChecks ,
303- idFieldsResponse );
322+ idFieldsResponse , adminUsers );
304323 }
305324
306325 @ Override
@@ -318,6 +337,7 @@ public String toString() {
318337 .add ("customProperties" , customProperties )
319338 .add ("additionalConnectionChecks" , additionalConnectionChecks )
320339 .add ("idFieldsResponse" , idFieldsResponse )
340+ .add ("adminUsers" , adminUsers )
321341 .toString ();
322342 }
323343}
0 commit comments