1616import java .util .Set ;
1717import java .util .UUID ;
1818import java .util .concurrent .Callable ;
19+ import java .util .stream .Collectors ;
20+
1921import lombok .extern .slf4j .Slf4j ;
2022import me .itzg .helpers .errors .GenericException ;
2123import me .itzg .helpers .errors .InvalidParameterException ;
2628import me .itzg .helpers .json .ObjectMappers ;
2729import me .itzg .helpers .users .model .JavaOp ;
2830import me .itzg .helpers .users .model .JavaUser ;
31+ import me .itzg .helpers .users .model .UserDef ;
2932
3033import org .apache .commons .codec .digest .DigestUtils ;
3134import org .apache .maven .artifact .versioning .ComparableVersion ;
@@ -114,8 +117,9 @@ public Integer call() throws Exception {
114117 }
115118
116119 private void processJavaUserIdList (SharedFetch sharedFetch , List <String > inputs ) throws IOException {
120+ List <UserDef > userDefs = inputs .stream ().map ((String input ) -> {return new UserDef (input );}).collect (Collectors .toList ());
117121 if (usesTextUserList ()) {
118- verifyNotUuids (inputs );
122+ verifyNotUuids (userDefs );
119123
120124 final Path resultFile = outputDirectory .resolve (
121125 type == Type .JAVA_OPS ? "ops.txt" : "white-list.txt"
@@ -126,8 +130,9 @@ private void processJavaUserIdList(SharedFetch sharedFetch, List<String> inputs)
126130 }
127131
128132 final Set <String > users = loadExistingTextUserList (resultFile );
129-
130- users .addAll (inputs );
133+ for (final UserDef user : userDefs ) {
134+ users .add (user .name );
135+ }
131136
132137 log .debug ("Writing users list to {}: {}" , resultFile , users );
133138 Files .write (resultFile , users );
@@ -142,7 +147,7 @@ private void processJavaUserIdList(SharedFetch sharedFetch, List<String> inputs)
142147 }
143148
144149 objectMapper .writeValue (resultFile .toFile (),
145- reconcile (sharedFetch , inputs ,
150+ reconcile (sharedFetch , userDefs ,
146151 loadExistingJavaJson (resultFile )
147152 )
148153 );
@@ -158,7 +163,7 @@ private boolean handleSkipExistingFile(Path resultFile) {
158163 return false ;
159164 }
160165
161- private List <? extends JavaUser > reconcile (SharedFetch sharedFetch , List <String > inputs , List <? extends JavaUser > existing ) {
166+ private List <? extends JavaUser > reconcile (SharedFetch sharedFetch , List <UserDef > userDefs , List <? extends JavaUser > existing ) {
162167
163168 final List <JavaUser > reconciled ;
164169 if (existingFileBehavior == ExistingFileBehavior .MERGE ) {
@@ -168,8 +173,8 @@ private List<? extends JavaUser> reconcile(SharedFetch sharedFetch, List<String>
168173 reconciled = new ArrayList <>(inputs .size ());
169174 }
170175
171- for (final String input : inputs ) {
172- final JavaUser resolvedUser = resolveJavaUserId (sharedFetch , existing , input . trim () );
176+ for (final UserDef userDef : userDefs ) {
177+ final JavaUser resolvedUser = resolveJavaUserId (sharedFetch , existing , userDef );
173178
174179 if (existingFileBehavior == ExistingFileBehavior .SYNCHRONIZE
175180 || !containsUserByUuid (reconciled , resolvedUser .getUuid ())) {
@@ -203,18 +208,18 @@ private boolean containsUserByUuid(List<JavaUser> users, String uuid) {
203208 return false ;
204209 }
205210
206- private JavaUser resolveJavaUserId (SharedFetch sharedFetch , List <? extends JavaUser > existing , String input ) {
211+ private JavaUser resolveJavaUserId (SharedFetch sharedFetch , List <? extends JavaUser > existing , UserDef user ) {
207212
208- return UuidQuirks .ifIdOrUuid (input )
213+ return UuidQuirks .ifIdOrUuid (user . name )
209214 .map (uuid -> {
210215 for (final JavaUser existingUser : existing ) {
211216 if (existingUser .getUuid ().equalsIgnoreCase (uuid )) {
212- log .debug ("Resolved '{}' from existing user entry by UUID: {}" , input , existingUser );
217+ log .debug ("Resolved '{}' from existing user entry by UUID: {}" , user . name , existingUser );
213218 return existingUser ;
214219 }
215220 }
216221
217- log .debug ("Resolved '{}' into new user entry" , input );
222+ log .debug ("Resolved '{}' into new user entry" , user . name );
218223 return JavaUser .builder ()
219224 .uuid (uuid )
220225 // username needs to be present, but content doesn't matter
@@ -226,8 +231,8 @@ private JavaUser resolveJavaUserId(SharedFetch sharedFetch, List<? extends JavaU
226231
227232 // ...or username
228233 for (final JavaUser existingUser : existing ) {
229- if (existingUser .getName ().equalsIgnoreCase (input )) {
230- log .debug ("Resolved '{}' from existing user entry by name: {}" , input , existingUser );
234+ if (existingUser .getName ().equalsIgnoreCase (user . name )) {
235+ log .debug ("Resolved '{}' from existing user entry by name: {}" , user . name , existingUser );
231236 return existingUser ;
232237 }
233238 }
@@ -237,8 +242,8 @@ private JavaUser resolveJavaUserId(SharedFetch sharedFetch, List<? extends JavaU
237242 try {
238243 final List <JavaUser > userCache = objectMapper .readValue (userCacheFile .toFile (), LIST_OF_JAVA_USER );
239244 for (final JavaUser existingUser : userCache ) {
240- if (existingUser .getName ().equalsIgnoreCase (input )) {
241- log .debug ("Resolved '{}' from user cache by name: {}" , input , existingUser );
245+ if (existingUser .getName ().equalsIgnoreCase (user . name )) {
246+ log .debug ("Resolved '{}' from user cache by name: {}" , user . name , existingUser );
242247 return existingUser ;
243248 }
244249 }
@@ -247,8 +252,8 @@ private JavaUser resolveJavaUserId(SharedFetch sharedFetch, List<? extends JavaU
247252 }
248253 }
249254
250- if (offline ) {
251- return getOfflineUUID (input );
255+ if (offline && user . flags . contains ( "offline" ) ) {
256+ return getOfflineUUID (user . name );
252257 }
253258
254259 final UserApi userApi ;
@@ -262,7 +267,7 @@ private JavaUser resolveJavaUserId(SharedFetch sharedFetch, List<? extends JavaU
262267 default :
263268 throw new GenericException ("User API provider was not specified" );
264269 }
265- return userApi .resolveUser (input );
270+ return userApi .resolveUser (user . name );
266271
267272 });
268273
@@ -293,10 +298,10 @@ private Set<String> loadExistingTextUserList(Path resultFile) throws IOException
293298 return new HashSet <>();
294299 }
295300
296- private void verifyNotUuids (List <String > inputs ) {
297- for (final String input : inputs ) {
298- if (UuidQuirks .isIdOrUuid (input )) {
299- throw new InvalidParameterException ("UUID cannot be provided: " + input );
301+ private void verifyNotUuids (List <UserDef > userDefs ) {
302+ for (final UserDef user : userDefs ) {
303+ if (UuidQuirks .isIdOrUuid (user . name )) {
304+ throw new InvalidParameterException ("UUID cannot be provided: " + user . name );
300305 }
301306 }
302307 }
0 commit comments