40
40
import com .sonymobile .tools .gerrit .gerritevents .dto .events .ChangeRestored ;
41
41
import com .sonymobile .tools .gerrit .gerritevents .dto .events .CommentAdded ;
42
42
import com .sonymobile .tools .gerrit .gerritevents .dto .events .GerritTriggeredEvent ;
43
+ import com .sonymobile .tools .gerrit .gerritevents .dto .events .HashtagsChanged ;
43
44
import com .sonymobile .tools .gerrit .gerritevents .dto .events .RefUpdated ;
44
45
import com .sonymobile .tools .gerrit .gerritevents .dto .events .TopicChanged ;
45
46
import hudson .model .Job ;
58
59
import java .util .List ;
59
60
import java .util .Set ;
60
61
import java .util .TreeSet ;
62
+ import java .util .stream .Collectors ;
61
63
62
64
/**
63
65
* The parameters to add to a build.
@@ -253,7 +255,19 @@ public enum GerritTriggerParameters {
253
255
/**
254
256
* Updated approvals.
255
257
*/
256
- GERRIT_EVENT_UPDATED_APPROVALS ;
258
+ GERRIT_EVENT_UPDATED_APPROVALS ,
259
+ /**
260
+ * Hashtags posted to Gerrit in a change based event.
261
+ */
262
+ GERRIT_HASHTAGS ,
263
+ /**
264
+ * Hashtags removed to Gerrit in a hashtags-changed event.
265
+ */
266
+ GERRIT_REMOVED_HASHTAGS ,
267
+ /**
268
+ * Hashtags added to Gerrit in a hashtags-changed event.
269
+ */
270
+ GERRIT_ADDED_HASHTAGS ;
257
271
258
272
private static final Logger logger = LoggerFactory .getLogger (GerritTriggerParameters .class );
259
273
@@ -408,6 +422,65 @@ public static void setOrCreateParameters(GerritTriggeredEvent gerritEvent, Job p
408
422
parameters , String .valueOf (((java .lang .Object )gerritEvent ).hashCode ()), escapeQuotes );
409
423
if (gerritEvent instanceof ChangeBasedEvent ) {
410
424
ChangeBasedEvent event = (ChangeBasedEvent )gerritEvent ;
425
+ setOrCreateParametersForChangeBasedEvent (event , parameters , escapeQuotes , nameAndEmailParameterMode ,
426
+ changeSubjectMode , project , commitMessageMode , commentTextMode );
427
+ } else if (gerritEvent instanceof RefUpdated ) {
428
+ RefUpdated event = (RefUpdated )gerritEvent ;
429
+ GERRIT_REFNAME .setOrCreateStringParameterValue (
430
+ parameters , event .getRefUpdate ().getRefName (), escapeQuotes );
431
+ GERRIT_PROJECT .setOrCreateStringParameterValue (
432
+ parameters , event .getRefUpdate ().getProject (), escapeQuotes );
433
+ GERRIT_OLDREV .setOrCreateStringParameterValue (
434
+ parameters , event .getRefUpdate ().getOldRev (), escapeQuotes );
435
+ GERRIT_NEWREV .setOrCreateStringParameterValue (
436
+ parameters , event .getRefUpdate ().getNewRev (), escapeQuotes );
437
+ }
438
+ Account account = gerritEvent .getAccount ();
439
+ if (account != null ) {
440
+ nameAndEmailParameterMode .setOrCreateParameterValue (GERRIT_EVENT_ACCOUNT , parameters ,
441
+ getNameAndEmail (account ), ParameterMode .PlainMode .STRING , escapeQuotes );
442
+ GERRIT_EVENT_ACCOUNT_NAME .setOrCreateStringParameterValue (
443
+ parameters , getName (account ), escapeQuotes );
444
+ GERRIT_EVENT_ACCOUNT_EMAIL .setOrCreateStringParameterValue (
445
+ parameters , getEmail (account ), escapeQuotes );
446
+ }
447
+ Provider provider = gerritEvent .getProvider ();
448
+ if (provider != null ) {
449
+ GERRIT_NAME .setOrCreateStringParameterValue (
450
+ parameters , provider .getName (), escapeQuotes );
451
+ GERRIT_HOST .setOrCreateStringParameterValue (
452
+ parameters , provider .getHost (), escapeQuotes );
453
+ GERRIT_PORT .setOrCreateStringParameterValue (
454
+ parameters , provider .getPort (), escapeQuotes );
455
+ GERRIT_SCHEME .setOrCreateStringParameterValue (
456
+ parameters , provider .getScheme (), escapeQuotes );
457
+ GERRIT_VERSION .setOrCreateStringParameterValue (
458
+ parameters , provider .getVersion (), escapeQuotes );
459
+ }
460
+ }
461
+
462
+ /**
463
+ * To avoid setOrCreateParameters too long,
464
+ * move change based event related function to separate method.
465
+ * Set or Create parameters for change based event.
466
+ *
467
+ * @param event ChangeBasedEvent
468
+ * @param parameters jenkins job parameters
469
+ * @param escapeQuotes do escape quotes or not
470
+ * @param nameAndEmailParameterMode mode for name and email
471
+ * @param changeSubjectMode mode for change subject
472
+ * @param project jenkins job
473
+ * @param commitMessageMode mode for commit message
474
+ * @param commentTextMode mode for comment text
475
+ */
476
+ private static void setOrCreateParametersForChangeBasedEvent (ChangeBasedEvent event ,
477
+ List <ParameterValue > parameters ,
478
+ boolean escapeQuotes ,
479
+ ParameterMode nameAndEmailParameterMode ,
480
+ ParameterMode changeSubjectMode ,
481
+ Job project ,
482
+ ParameterMode commitMessageMode ,
483
+ ParameterMode commentTextMode ) {
411
484
GERRIT_CHANGE_WIP_STATE .setOrCreateStringParameterValue (
412
485
parameters , String .valueOf (event .getChange ().isWip ()), escapeQuotes );
413
486
GERRIT_CHANGE_PRIVATE_STATE .setOrCreateStringParameterValue (
@@ -420,6 +493,8 @@ public static void setOrCreateParameters(GerritTriggeredEvent gerritEvent, Job p
420
493
parameters , event .getChange ().getNumber (), escapeQuotes );
421
494
GERRIT_CHANGE_ID .setOrCreateStringParameterValue (
422
495
parameters , event .getChange ().getId (), escapeQuotes );
496
+ GERRIT_HASHTAGS .setOrCreateStringParameterValue (
497
+ parameters , String .join ("," , event .getChange ().getHashtags ()), escapeQuotes );
423
498
String pNumber = null ;
424
499
if (null != event .getPatchSet ()) {
425
500
pNumber = event .getPatchSet ().getNumber ();
@@ -498,40 +573,15 @@ public static void setOrCreateParameters(GerritTriggeredEvent gerritEvent, Job p
498
573
parameters , comment , ParameterMode .PlainMode .TEXT , escapeQuotes );
499
574
}
500
575
GERRIT_EVENT_UPDATED_APPROVALS .setOrCreateStringParameterValue (parameters ,
501
- getUpdatedApprovals ((CommentAdded )event ), false );
576
+ getUpdatedApprovals ((CommentAdded )event ), false );
502
577
}
503
- } else if (gerritEvent instanceof RefUpdated ) {
504
- RefUpdated event = (RefUpdated )gerritEvent ;
505
- GERRIT_REFNAME .setOrCreateStringParameterValue (
506
- parameters , event .getRefUpdate ().getRefName (), escapeQuotes );
507
- GERRIT_PROJECT .setOrCreateStringParameterValue (
508
- parameters , event .getRefUpdate ().getProject (), escapeQuotes );
509
- GERRIT_OLDREV .setOrCreateStringParameterValue (
510
- parameters , event .getRefUpdate ().getOldRev (), escapeQuotes );
511
- GERRIT_NEWREV .setOrCreateStringParameterValue (
512
- parameters , event .getRefUpdate ().getNewRev (), escapeQuotes );
513
- }
514
- Account account = gerritEvent .getAccount ();
515
- if (account != null ) {
516
- nameAndEmailParameterMode .setOrCreateParameterValue (GERRIT_EVENT_ACCOUNT , parameters ,
517
- getNameAndEmail (account ), ParameterMode .PlainMode .STRING , escapeQuotes );
518
- GERRIT_EVENT_ACCOUNT_NAME .setOrCreateStringParameterValue (
519
- parameters , getName (account ), escapeQuotes );
520
- GERRIT_EVENT_ACCOUNT_EMAIL .setOrCreateStringParameterValue (
521
- parameters , getEmail (account ), escapeQuotes );
522
- }
523
- Provider provider = gerritEvent .getProvider ();
524
- if (provider != null ) {
525
- GERRIT_NAME .setOrCreateStringParameterValue (
526
- parameters , provider .getName (), escapeQuotes );
527
- GERRIT_HOST .setOrCreateStringParameterValue (
528
- parameters , provider .getHost (), escapeQuotes );
529
- GERRIT_PORT .setOrCreateStringParameterValue (
530
- parameters , provider .getPort (), escapeQuotes );
531
- GERRIT_SCHEME .setOrCreateStringParameterValue (
532
- parameters , provider .getScheme (), escapeQuotes );
533
- GERRIT_VERSION .setOrCreateStringParameterValue (
534
- parameters , provider .getVersion (), escapeQuotes );
578
+ if (event instanceof HashtagsChanged ) {
579
+ String addedHashtags = ((HashtagsChanged )event ).getAddedHashtags ().stream ()
580
+ .collect (Collectors .joining ("," ));
581
+ String removedHashtags = ((HashtagsChanged )event ).getRemovedHashtags ().stream ()
582
+ .collect (Collectors .joining ("," ));
583
+ GERRIT_ADDED_HASHTAGS .setOrCreateStringParameterValue (parameters , addedHashtags , escapeQuotes );
584
+ GERRIT_REMOVED_HASHTAGS .setOrCreateStringParameterValue (parameters , removedHashtags , escapeQuotes );
535
585
}
536
586
}
537
587
0 commit comments