|
41 | 41 | import com.optimizely.ab.event.BatchEventProcessor; |
42 | 42 | import com.optimizely.ab.event.EventProcessor; |
43 | 43 | import com.optimizely.ab.event.LogEvent; |
| 44 | +import com.optimizely.ab.notification.ActivateNotification; |
44 | 45 | import com.optimizely.ab.notification.DecisionNotification; |
45 | 46 | import com.optimizely.ab.notification.NotificationCenter; |
46 | 47 | import com.optimizely.ab.notification.TrackNotification; |
@@ -570,59 +571,65 @@ protected void addNotificationListener(ArgumentsParser argumentsParser, @NonNull |
570 | 571 | result.success(createResponse(false, ErrorMessage.INVALID_PARAMS)); |
571 | 572 | return; |
572 | 573 | } |
| 574 | + int notificationId = 0; |
573 | 575 | switch (type) { |
574 | 576 | case NotificationType.DECISION: { |
575 | | - int notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(DecisionNotification.class, decisionNotification -> { |
| 577 | + notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(DecisionNotification.class, decisionNotification -> { |
576 | 578 | Map<String, Object> notificationMap = new HashMap<>(); |
577 | 579 | notificationMap.put(DecisionListenerKeys.TYPE, decisionNotification.getType()); |
578 | 580 | notificationMap.put(DecisionListenerKeys.USER_ID, decisionNotification.getUserId()); |
579 | 581 | notificationMap.put(DecisionListenerKeys.ATTRIBUTES, decisionNotification.getAttributes()); |
580 | 582 | notificationMap.put(DecisionListenerKeys.DECISION_INFO, decisionNotification.getDecisionInfo()); |
581 | 583 | invokeNotification(id, NotificationType.DECISION, notificationMap); |
582 | 584 | }); |
583 | | - notificationIdsTracker.put(id, notificationId); |
584 | | - result.success(createResponse(true, SuccessMessage.LISTENER_ADDED)); |
| 585 | + break; |
| 586 | + } |
| 587 | + case NotificationType.ACTIVATE: { |
| 588 | + notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(ActivateNotification.class, activateNotification -> { |
| 589 | + Map<String, Object> notificationMap = new HashMap<>(); |
| 590 | + notificationMap.put(ActivateListenerKeys.EXPERIMENT_KEY, activateNotification.getExperiment().getKey()); |
| 591 | + notificationMap.put(ActivateListenerKeys.USER_ID, activateNotification.getUserId()); |
| 592 | + notificationMap.put(ActivateListenerKeys.ATTRIBUTES, activateNotification.getAttributes()); |
| 593 | + notificationMap.put(ActivateListenerKeys.VARIATION_KEY, activateNotification.getVariation().getKey()); |
| 594 | + invokeNotification(id, NotificationType.ACTIVATE, notificationMap); |
| 595 | + }); |
585 | 596 | break; |
586 | 597 | } |
587 | 598 | case NotificationType.TRACK: { |
588 | | - int notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(TrackNotification.class, trackNotification -> { |
| 599 | + notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(TrackNotification.class, trackNotification -> { |
589 | 600 | Map<String, Object> notificationMap = new HashMap<>(); |
590 | 601 | notificationMap.put(TrackListenerKeys.EVENT_KEY, trackNotification.getEventKey()); |
591 | 602 | notificationMap.put(TrackListenerKeys.USER_ID, trackNotification.getUserId()); |
592 | 603 | notificationMap.put(TrackListenerKeys.ATTRIBUTES, trackNotification.getAttributes()); |
593 | 604 | notificationMap.put(TrackListenerKeys.EVENT_TAGS, trackNotification.getEventTags()); |
594 | 605 | invokeNotification(id, NotificationType.TRACK, notificationMap); |
595 | 606 | }); |
596 | | - notificationIdsTracker.put(id, notificationId); |
597 | | - result.success(createResponse(true, SuccessMessage.LISTENER_ADDED)); |
598 | 607 | break; |
599 | 608 | } |
600 | 609 | case NotificationType.LOG_EVENT: { |
601 | | - int notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(LogEvent.class, logEvent -> { |
| 610 | + notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(LogEvent.class, logEvent -> { |
602 | 611 | ObjectMapper mapper = new ObjectMapper(); |
603 | 612 | Map<String, Object> eventParams = mapper.readValue(logEvent.getBody(), Map.class); |
604 | 613 | Map<String, Object> listenerMap = new HashMap<>(); |
605 | 614 | listenerMap.put(LogEventListenerKeys.URL, logEvent.getEndpointUrl()); |
606 | 615 | listenerMap.put(LogEventListenerKeys.PARAMS, eventParams); |
607 | 616 | invokeNotification(id, NotificationType.LOG_EVENT, listenerMap); |
608 | 617 | }); |
609 | | - notificationIdsTracker.put(id, notificationId); |
610 | | - result.success(createResponse(true, SuccessMessage.LISTENER_ADDED)); |
611 | 618 | break; |
612 | 619 | } |
613 | 620 | case NotificationType.CONFIG_UPDATE: { |
614 | | - int notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(UpdateConfigNotification.class, configUpdate -> { |
| 621 | + notificationId = optimizelyClient.getNotificationCenter().addNotificationHandler(UpdateConfigNotification.class, configUpdate -> { |
615 | 622 | Map<String, Object> listenerMap = new HashMap<>(); |
616 | 623 | listenerMap.put("Config-update", Collections.emptyMap()); |
617 | 624 | invokeNotification(id, NotificationType.CONFIG_UPDATE, listenerMap); |
618 | 625 | }); |
619 | | - notificationIdsTracker.put(id, notificationId); |
620 | | - result.success(createResponse(true, SuccessMessage.LISTENER_ADDED)); |
621 | 626 | break; |
622 | 627 | } |
623 | 628 | default: |
624 | 629 | result.success(createResponse(false, ErrorMessage.INVALID_PARAMS)); |
625 | 630 | } |
| 631 | + notificationIdsTracker.put(id, notificationId); |
| 632 | + result.success(createResponse(true, SuccessMessage.LISTENER_ADDED)); |
626 | 633 | } |
627 | 634 |
|
628 | 635 | private void invokeNotification(int id, String notificationType, Map notificationMap) { |
|
0 commit comments