1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api.user
21 
22 import akka.actor.typed.scaladsl.Behaviors
23 import akka.actor.typed.{Behavior, Props}
24 import org.make.api.kafka.kafkaDispatcher
25 import org.make.api.operation.OperationServiceComponent
26 import org.make.api.organisation.{
27   OrganisationConsumerBehavior,
28   OrganisationSearchEngineComponent,
29   OrganisationServiceComponent
30 }
31 import org.make.api.technical.ActorSystemHelper.superviseWithBackoff
32 import org.make.api.technical.crm.SendMailPublisherServiceComponent
33 import org.make.api.technical.elasticsearch.ElasticsearchConfigurationComponent
34 import org.make.api.userhistory.UserHistoryCoordinatorServiceComponent
35 
36 object UserSupervisor {
37 
38   def apply(dependencies: UserSupervisorDependencies): Behavior[Nothing] = {
39     Behaviors.setup[Nothing] { context =>
40       context.watch(context.spawn(UserProducerBehavior(), UserProducerBehavior.name))
41 
42       context.watch(
43         context.spawn(
44           superviseWithBackoff(
45             UserEmailConsumerBehavior(dependencies.userService, dependencies.sendMailPublisherService)
46           ),
47           UserEmailConsumerBehavior.name,
48           Props.empty.withDispatcherFromConfig(kafkaDispatcher)
49         )
50       )
51 
52       context.watch(
53         context.spawn(
54           superviseWithBackoff(
55             UserHistoryConsumerBehavior(dependencies.userHistoryCoordinatorService, dependencies.userService)
56           ),
57           UserHistoryConsumerBehavior.name,
58           Props.empty.withDispatcherFromConfig(kafkaDispatcher)
59         )
60       )
61 
62       context.watch(
63         context.spawn(
64           superviseWithBackoff(UserImageConsumerBehavior(dependencies.userService)),
65           UserImageConsumerBehavior.name,
66           Props.empty.withDispatcherFromConfig(kafkaDispatcher)
67         )
68       )
69 
70       context.spawn(
71         superviseWithBackoff(
72           OrganisationConsumerBehavior(dependencies.organisationService, dependencies.elasticsearchOrganisationAPI)
73         ),
74         OrganisationConsumerBehavior.name,
75         Props.empty.withDispatcherFromConfig(kafkaDispatcher)
76       )
77 
78       Behaviors.empty
79     }
80   }
81 
82   type UserSupervisorDependencies = UserServiceComponent
83     with OperationServiceComponent
84     with OrganisationServiceComponent
85     with OrganisationSearchEngineComponent
86     with ElasticsearchConfigurationComponent
87     with SendMailPublisherServiceComponent
88     with UserServiceComponent
89     with UserHistoryCoordinatorServiceComponent
90 
91   val name: String = "users"
92 }
Line Stmt Id Pos Tree Symbol Tests Code
39 34635 1487 - 2828 Apply akka.actor.typed.scaladsl.Behaviors.setup akka.actor.typed.scaladsl.Behaviors.setup[Nothing](((context: akka.actor.typed.scaladsl.ActorContext[Nothing]) => { context.watch[org.make.api.userhistory.UserEvent](context.spawn[org.make.api.userhistory.UserEvent](UserProducerBehavior.apply(), UserProducerBehavior.name, context.spawn$default$3[Nothing])); context.watch[org.make.api.technical.KafkaConsumerBehavior.Protocol](context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserEmailConsumerBehavior.apply(dependencies.userService, dependencies.sendMailPublisherService)), UserEmailConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher))); context.watch[org.make.api.technical.KafkaConsumerBehavior.Protocol](context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserHistoryConsumerBehavior.apply(dependencies.userHistoryCoordinatorService, dependencies.userService)), UserHistoryConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher))); context.watch[org.make.api.technical.KafkaConsumerBehavior.Protocol](context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserImageConsumerBehavior.apply(dependencies.userService)), UserImageConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher))); context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.organisation.OrganisationConsumerBehavior.apply(dependencies.organisationService, dependencies.elasticsearchOrganisationAPI)), org.make.api.organisation.OrganisationConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)); akka.actor.typed.scaladsl.Behaviors.empty[Nothing] }))
40 34878 1531 - 1610 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.userhistory.UserEvent](context.spawn[org.make.api.userhistory.UserEvent](UserProducerBehavior.apply(), UserProducerBehavior.name, context.spawn$default$3[Nothing]))
40 46265 1553 - 1553 TypeApply akka.actor.typed.scaladsl.ActorContext.spawn$default$3 context.spawn$default$3[Nothing]
40 43173 1545 - 1609 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[org.make.api.userhistory.UserEvent](UserProducerBehavior.apply(), UserProducerBehavior.name, context.spawn$default$3[Nothing])
40 33244 1583 - 1608 Select org.make.api.user.UserProducerBehavior.name UserProducerBehavior.name
40 41381 1559 - 1581 Apply org.make.api.user.UserProducerBehavior.apply UserProducerBehavior.apply()
42 35348 1618 - 1927 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.technical.KafkaConsumerBehavior.Protocol](context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserEmailConsumerBehavior.apply(dependencies.userService, dependencies.sendMailPublisherService)), UserEmailConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)))
43 43213 1641 - 1919 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserEmailConsumerBehavior.apply(dependencies.userService, dependencies.sendMailPublisherService)), UserEmailConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher))
44 49698 1666 - 1802 Apply org.make.api.technical.ActorSystemHelper.superviseWithBackoff org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserEmailConsumerBehavior.apply(dependencies.userService, dependencies.sendMailPublisherService))
45 36410 1700 - 1790 Apply org.make.api.user.UserEmailConsumerBehavior.apply UserEmailConsumerBehavior.apply(dependencies.userService, dependencies.sendMailPublisherService)
45 39780 1752 - 1789 Select org.make.api.technical.crm.SendMailPublisherServiceComponent.sendMailPublisherService dependencies.sendMailPublisherService
45 48665 1726 - 1750 Select org.make.api.user.UserServiceComponent.userService dependencies.userService
47 42176 1814 - 1844 Select org.make.api.user.UserEmailConsumerBehavior.name UserEmailConsumerBehavior.name
48 34314 1893 - 1908 Select org.make.api.kafka.kafkaDispatcher org.make.api.kafka.kafkaDispatcher
48 47057 1856 - 1909 Apply akka.actor.typed.Props.withDispatcherFromConfig akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)
52 34838 1935 - 2253 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.technical.KafkaConsumerBehavior.Protocol](context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserHistoryConsumerBehavior.apply(dependencies.userHistoryCoordinatorService, dependencies.userService)), UserHistoryConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)))
53 42967 1958 - 2245 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserHistoryConsumerBehavior.apply(dependencies.userHistoryCoordinatorService, dependencies.userService)), UserHistoryConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher))
54 49741 1983 - 2126 Apply org.make.api.technical.ActorSystemHelper.superviseWithBackoff org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserHistoryConsumerBehavior.apply(dependencies.userHistoryCoordinatorService, dependencies.userService))
55 48701 2045 - 2087 Select org.make.api.userhistory.UserHistoryCoordinatorServiceComponent.userHistoryCoordinatorService dependencies.userHistoryCoordinatorService
55 40851 2089 - 2113 Select org.make.api.user.UserServiceComponent.userService dependencies.userService
55 32693 2017 - 2114 Apply org.make.api.user.UserHistoryConsumerBehavior.apply UserHistoryConsumerBehavior.apply(dependencies.userHistoryCoordinatorService, dependencies.userService)
57 41336 2138 - 2170 Select org.make.api.user.UserHistoryConsumerBehavior.name UserHistoryConsumerBehavior.name
58 46811 2182 - 2235 Apply akka.actor.typed.Props.withDispatcherFromConfig akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)
58 34351 2219 - 2234 Select org.make.api.kafka.kafkaDispatcher org.make.api.kafka.kafkaDispatcher
62 43006 2261 - 2507 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.technical.KafkaConsumerBehavior.Protocol](context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserImageConsumerBehavior.apply(dependencies.userService)), UserImageConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)))
63 46847 2284 - 2499 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserImageConsumerBehavior.apply(dependencies.userService)), UserImageConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher))
64 40331 2330 - 2381 Apply org.make.api.user.UserImageConsumerBehavior.apply UserImageConsumerBehavior.apply(dependencies.userService)
64 47868 2356 - 2380 Select org.make.api.user.UserServiceComponent.userService dependencies.userService
64 32735 2309 - 2382 Apply org.make.api.technical.ActorSystemHelper.superviseWithBackoff org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](UserImageConsumerBehavior.apply(dependencies.userService))
65 49484 2394 - 2424 Select org.make.api.user.UserImageConsumerBehavior.name UserImageConsumerBehavior.name
66 33501 2436 - 2489 Apply akka.actor.typed.Props.withDispatcherFromConfig akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)
66 41375 2473 - 2488 Select org.make.api.kafka.kafkaDispatcher org.make.api.kafka.kafkaDispatcher
70 46300 2515 - 2799 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.organisation.OrganisationConsumerBehavior.apply(dependencies.organisationService, dependencies.elasticsearchOrganisationAPI)), org.make.api.organisation.OrganisationConsumerBehavior.name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher))
71 32494 2538 - 2685 Apply org.make.api.technical.ActorSystemHelper.superviseWithBackoff org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.technical.KafkaConsumerBehavior.Protocol](org.make.api.organisation.OrganisationConsumerBehavior.apply(dependencies.organisationService, dependencies.elasticsearchOrganisationAPI))
72 39774 2570 - 2675 Apply org.make.api.organisation.OrganisationConsumerBehavior.apply org.make.api.organisation.OrganisationConsumerBehavior.apply(dependencies.organisationService, dependencies.elasticsearchOrganisationAPI)
72 47905 2633 - 2674 Select org.make.api.organisation.OrganisationSearchEngineComponent.elasticsearchOrganisationAPI dependencies.elasticsearchOrganisationAPI
72 34596 2599 - 2631 Select org.make.api.organisation.OrganisationServiceComponent.organisationService dependencies.organisationService
74 48988 2695 - 2728 Select org.make.api.organisation.OrganisationConsumerBehavior.name org.make.api.organisation.OrganisationConsumerBehavior.name
75 34304 2738 - 2791 Apply akka.actor.typed.Props.withDispatcherFromConfig akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)
75 41136 2775 - 2790 Select org.make.api.kafka.kafkaDispatcher org.make.api.kafka.kafkaDispatcher
78 39044 2807 - 2822 TypeApply akka.actor.typed.scaladsl.Behaviors.empty akka.actor.typed.scaladsl.Behaviors.empty[Nothing]
91 47653 3195 - 3202 Literal <nosymbol> "users"