This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch UNOMI-341-refactoring-graphql-servicemanager
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit 8014350292a4cda8e8f764c9fbbd192476cf2aea
Author: Serge Huber <[email protected]>
AuthorDate: Fri Jun 5 16:32:06 2020 +0200

    UNOMI-341 - Refactor ServiceManager
---
 .../commands/CreateOrUpdatePersonaCommand.java     |   2 +-
 .../CreateOrUpdateProfilePropertiesCommand.java    |   5 +-
 .../commands/DeleteAllPersonalDataCommand.java     |   6 +-
 .../graphql/commands/DeleteProfileCommand.java     |   6 +-
 .../commands/DeleteProfilePropertiesCommand.java   |   9 +-
 .../graphql/commands/ProcessEventsCommand.java     |   5 +-
 .../commands/list/AddProfileToListCommand.java     |  10 +-
 .../commands/list/CreateOrUpdateListCommand.java   |   2 +-
 .../graphql/commands/list/DeleteListCommand.java   |   8 +-
 .../list/RemoveProfileFromListCommand.java         |  10 +-
 .../segments/BaseCreateOrUpdateSegmentCommand.java |   2 +-
 .../segments/CreateOrUpdateSegmentCommand.java     |   3 +-
 .../CreateOrUpdateUnomiSegmentCommand.java         |   5 +-
 .../commands/segments/DeleteSegmentCommand.java    |   3 +-
 .../condition/factories/ConditionFactory.java      |   2 +-
 .../factories/ProfileConditionFactory.java         |   3 +-
 .../SegmentProfilePropertiesConditionParser.java   |   3 +-
 .../consent/ConsentEventConnectionDataFetcher.java |   9 +-
 .../graphql/fetchers/event/EventDataFetcher.java   |   5 +-
 .../event/FindEventsConnectionDataFetcher.java     |   3 +-
 .../graphql/fetchers/list/GetListDataFetcher.java  |   3 +-
 .../fetchers/list/ListConnectionDataFetcher.java   |   3 +-
 .../list/ListProfileConnectionDataFetcher.java     |   3 +-
 .../profile/FindProfilesConnectionDataFetcher.java |   3 +-
 .../ProfileAllEventsConnectionDataFetcher.java     |   3 +-
 .../fetchers/profile/ProfileDataFetcher.java       |   2 +-
 .../ProfileLastEventsConnectionDataFetcher.java    |   3 +-
 .../fetchers/profile/ProfileListsDataFetcher.java  |   2 +-
 .../profile/ProfileMatchesDataFetcher.java         |   2 +-
 .../profile/ProfileSegmentsDataFetcher.java        |   2 +-
 .../profile/PropertiesConnectionDataFetcher.java   |   3 +-
 .../segment/FindSegmentsConnectionDataFetcher.java |   6 +-
 .../fetchers/segment/SegmentDataFetcher.java       |   3 +-
 .../fetchers/segment/UnomiSegmentDataFetcher.java  |   3 +-
 .../unomi/graphql/services/ServiceManager.java     | 126 ++-------------------
 .../types/input/BaseProfileEventProcessor.java     |   3 +-
 .../unomi/graphql/types/output/CDPEventEdge.java   |   3 +-
 .../graphql/types/output/CDPEventInterface.java    |   3 +-
 .../graphql/types/output/CDPListsUpdateEvent.java  |   3 +-
 .../unomi/graphql/types/output/CDPProfileEdge.java |   3 +-
 .../graphql/types/output/CDPPropertyEdge.java      |   3 +-
 41 files changed, 111 insertions(+), 175 deletions(-)

diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/CreateOrUpdatePersonaCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/CreateOrUpdatePersonaCommand.java
index 16f2c48..2180ef1 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/CreateOrUpdatePersonaCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/CreateOrUpdatePersonaCommand.java
@@ -48,7 +48,7 @@ public class CreateOrUpdatePersonaCommand extends 
BaseCommand<CDPPersona> {
 
     @Override
     public CDPPersona execute() {
-        final ProfileService profileService = 
serviceManager.getProfileService();
+        final ProfileService profileService = 
serviceManager.getService(ProfileService.class);
 
         final Map<String, Object> personaAsMap = 
environment.getArgument(PERSONA_ARGUMENT_NAME);
 
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/CreateOrUpdateProfilePropertiesCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/CreateOrUpdateProfilePropertiesCommand.java
index 930d73f..e4ab62e 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/CreateOrUpdateProfilePropertiesCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/CreateOrUpdateProfilePropertiesCommand.java
@@ -18,6 +18,7 @@ package org.apache.unomi.graphql.commands;
 
 import org.apache.unomi.api.PropertyType;
 import org.apache.unomi.api.services.ProfileService;
+import org.apache.unomi.graphql.schema.GraphQLSchemaUpdater;
 import org.apache.unomi.graphql.types.input.CDPPropertyInput;
 import org.apache.unomi.graphql.types.input.property.BaseCDPPropertyInput;
 import org.apache.unomi.graphql.types.input.property.CDPSetPropertyInput;
@@ -38,7 +39,7 @@ public class CreateOrUpdateProfilePropertiesCommand extends 
BaseCommand<Boolean>
         super(builder);
 
         this.properties = builder.properties;
-        this.profileService = serviceManager.getProfileService();
+        this.profileService = serviceManager.getService(ProfileService.class);
     }
 
     public static Builder create(List<CDPPropertyInput> properties) {
@@ -53,7 +54,7 @@ public class CreateOrUpdateProfilePropertiesCommand extends 
BaseCommand<Boolean>
             profileService.setPropertyType(propertyType);
         });
 
-        serviceManager.getGraphQLSchemaUpdater().updateSchema();
+        serviceManager.getService(GraphQLSchemaUpdater.class).updateSchema();
 
         return true;
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteAllPersonalDataCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteAllPersonalDataCommand.java
index 8aae171..46a1b32 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteAllPersonalDataCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteAllPersonalDataCommand.java
@@ -18,6 +18,8 @@ package org.apache.unomi.graphql.commands;
 
 import com.google.common.base.Strings;
 import org.apache.unomi.api.Profile;
+import org.apache.unomi.api.services.PrivacyService;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.services.ServiceManager;
 
 import java.util.Map;
@@ -37,13 +39,13 @@ public class DeleteAllPersonalDataCommand extends 
BaseCommand<Boolean> {
 
         final String profileId = (String) cdpProfileIdInput.get("id");
 
-        final Profile profile = 
serviceManager.getProfileService().load(profileId);
+        final Profile profile = 
serviceManager.getService(ProfileService.class).load(profileId);
 
         if (profile == null) {
             return false;
         }
 
-        return serviceManager.getPrivacyService().deleteProfileData(profileId, 
false);
+        return 
serviceManager.getService(PrivacyService.class).deleteProfileData(profileId, 
false);
     }
 
     public static Builder create() {
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteProfileCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteProfileCommand.java
index 89309aa..cc76e5c 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteProfileCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteProfileCommand.java
@@ -17,6 +17,7 @@
 package org.apache.unomi.graphql.commands;
 
 import org.apache.unomi.api.Profile;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.services.ServiceManager;
 
 import java.util.Map;
@@ -35,13 +36,14 @@ public class DeleteProfileCommand extends 
BaseCommand<Boolean> {
 
         final String profileId = (String) cdpProfileIdInput.get("id");
 
-        final Profile profile = 
serviceManager.getProfileService().load(profileId);
+        ProfileService profileService = 
serviceManager.getService(ProfileService.class);
+        final Profile profile = profileService.load(profileId);
 
         if (profile == null) {
             throw new IllegalStateException(String.format("The profile with id 
\"%s\" not found", profileId));
         }
 
-        serviceManager.getProfileService().delete(profileId, false);
+        profileService.delete(profileId, false);
 
         return true;
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteProfilePropertiesCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteProfilePropertiesCommand.java
index 5e4064b..ec63f65 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteProfilePropertiesCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/DeleteProfilePropertiesCommand.java
@@ -17,6 +17,8 @@
 package org.apache.unomi.graphql.commands;
 
 import org.apache.unomi.api.PropertyType;
+import org.apache.unomi.api.services.ProfileService;
+import org.apache.unomi.graphql.schema.GraphQLSchemaUpdater;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -39,7 +41,8 @@ public class DeleteProfilePropertiesCommand extends 
BaseCommand<Boolean> {
 
     @Override
     public Boolean execute() {
-        final Collection<PropertyType> propertyTypes = 
serviceManager.getProfileService().getTargetPropertyTypes("profiles");
+        ProfileService profileService = 
serviceManager.getService(ProfileService.class);
+        final Collection<PropertyType> propertyTypes = 
profileService.getTargetPropertyTypes("profiles");
 
         final List<String> persistedPropertyNames = 
propertyTypes.stream().map(PropertyType::getItemId).collect(Collectors.toList());
 
@@ -52,7 +55,7 @@ public class DeleteProfilePropertiesCommand extends 
BaseCommand<Boolean> {
 
         for (String propertyName : propertyNames) {
             try {
-                boolean deleted = 
serviceManager.getProfileService().deletePropertyType(propertyName);
+                boolean deleted = 
profileService.deletePropertyType(propertyName);
 
                 if (deleted) {
                     LOG.info("The property \"{}\" of profile was deleted 
successfully", propertyName);
@@ -64,7 +67,7 @@ public class DeleteProfilePropertiesCommand extends 
BaseCommand<Boolean> {
             }
         }
 
-        serviceManager.getGraphQLSchemaUpdater().updateSchema();
+        serviceManager.getService(GraphQLSchemaUpdater.class).updateSchema();
 
         return true;
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/ProcessEventsCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/ProcessEventsCommand.java
index d8bed1d..49a9107 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/ProcessEventsCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/ProcessEventsCommand.java
@@ -21,6 +21,7 @@ import graphql.schema.GraphQLInputObjectField;
 import graphql.schema.GraphQLInputObjectType;
 import org.apache.unomi.api.Event;
 import org.apache.unomi.api.services.EventService;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.CDPGraphQLConstants;
 import org.apache.unomi.graphql.types.input.CDPConsentUpdateEventInput;
 import org.apache.unomi.graphql.types.input.CDPEventInput;
@@ -158,10 +159,10 @@ public class ProcessEventsCommand extends 
BaseCommand<Integer> {
     }
 
     private void processEvent(final Event event) {
-        int eventCode = serviceManager.getEventService().send(event);
+        int eventCode = 
serviceManager.getService(EventService.class).send(event);
 
         if (eventCode == EventService.PROFILE_UPDATED) {
-            serviceManager.getProfileService().save(event.getProfile());
+            
serviceManager.getService(ProfileService.class).save(event.getProfile());
         }
         processedEventsQty.incrementAndGet();
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/AddProfileToListCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/AddProfileToListCommand.java
index 5f62842..285b566 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/AddProfileToListCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/AddProfileToListCommand.java
@@ -19,6 +19,7 @@ package org.apache.unomi.graphql.commands.list;
 import org.apache.unomi.api.Event;
 import org.apache.unomi.api.Profile;
 import org.apache.unomi.api.services.EventService;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.CDPGraphQLConstants;
 import org.apache.unomi.graphql.commands.BaseCommand;
 import org.apache.unomi.graphql.converters.UserListConverter;
@@ -26,6 +27,7 @@ import org.apache.unomi.graphql.types.input.CDPProfileIDInput;
 import org.apache.unomi.graphql.types.output.CDPList;
 import org.apache.unomi.graphql.utils.EventBuilder;
 import org.apache.unomi.lists.UserList;
+import org.apache.unomi.services.UserListService;
 
 import java.util.Collections;
 import java.util.Objects;
@@ -46,13 +48,13 @@ public class AddProfileToListCommand extends 
BaseCommand<CDPList> {
 
     @Override
     public CDPList execute() {
-        final UserList userList = 
serviceManager.getUserListServiceExt().load(listId);
+        final UserList userList = 
serviceManager.getService(UserListService.class).load(listId);
 
         if (userList == null) {
             return null;
         }
 
-        final Profile profile = 
serviceManager.getProfileService().load(profileIDInput.getId());
+        final Profile profile = 
serviceManager.getService(ProfileService.class).load(profileIDInput.getId());
 
         if (profile == null) {
             return null;
@@ -63,8 +65,8 @@ public class AddProfileToListCommand extends 
BaseCommand<CDPList> {
                 .setPersistent(true)
                 .build();
 
-        if (serviceManager.getEventService().send(event) == 
EventService.PROFILE_UPDATED) {
-            serviceManager.getProfileService().save(event.getProfile());
+        if (serviceManager.getService(EventService.class).send(event) == 
EventService.PROFILE_UPDATED) {
+            
serviceManager.getService(ProfileService.class).save(event.getProfile());
         }
 
         return new CDPList(UserListConverter.convertToUnomiList(userList));
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/CreateOrUpdateListCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/CreateOrUpdateListCommand.java
index ce64ee9..1a64a79 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/CreateOrUpdateListCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/CreateOrUpdateListCommand.java
@@ -39,7 +39,7 @@ public class CreateOrUpdateListCommand extends 
BaseCommand<CDPList> {
 
     @Override
     public CDPList execute() {
-        final UserListService userListService = 
serviceManager.getUserListServiceExt();
+        final UserListService userListService = 
serviceManager.getService(UserListService.class);
 
         final String listId = Strings.isNullOrEmpty(listInput.getId())
                 ? listInput.getName()
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/DeleteListCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/DeleteListCommand.java
index aa10682..c08e197 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/DeleteListCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/DeleteListCommand.java
@@ -17,6 +17,7 @@
 package org.apache.unomi.graphql.commands.list;
 
 import org.apache.unomi.graphql.commands.BaseCommand;
+import org.apache.unomi.services.UserListService;
 
 import java.util.Objects;
 
@@ -32,13 +33,14 @@ public class DeleteListCommand extends BaseCommand<Boolean> 
{
 
     @Override
     public Boolean execute() {
-        if (serviceManager.getUserListServiceExt().load(listId) == null) {
+        UserListService userListService = 
serviceManager.getService(UserListService.class);
+        if (userListService.load(listId) == null) {
             return false;
         }
 
-        serviceManager.getUserListServiceExt().delete(listId);
+        userListService.delete(listId);
 
-        return serviceManager.getUserListServiceExt().load(listId) == null;
+        return userListService.load(listId) == null;
     }
 
     public static Builder create(final String listId) {
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/RemoveProfileFromListCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/RemoveProfileFromListCommand.java
index edf3582..18b0906 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/RemoveProfileFromListCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/list/RemoveProfileFromListCommand.java
@@ -19,11 +19,13 @@ package org.apache.unomi.graphql.commands.list;
 import org.apache.unomi.api.Event;
 import org.apache.unomi.api.Profile;
 import org.apache.unomi.api.services.EventService;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.CDPGraphQLConstants;
 import org.apache.unomi.graphql.commands.BaseCommand;
 import org.apache.unomi.graphql.types.input.CDPProfileIDInput;
 import org.apache.unomi.graphql.utils.EventBuilder;
 import org.apache.unomi.lists.UserList;
+import org.apache.unomi.services.UserListService;
 
 import java.util.Collections;
 import java.util.Objects;
@@ -42,13 +44,13 @@ public class RemoveProfileFromListCommand extends 
BaseCommand<Boolean> {
 
     @Override
     public Boolean execute() {
-        final UserList userList = 
serviceManager.getUserListServiceExt().load(listId);
+        final UserList userList = 
serviceManager.getService(UserListService.class).load(listId);
 
         if (userList == null) {
             return null;
         }
 
-        final Profile profile = 
serviceManager.getProfileService().load(profileIDInput.getId());
+        final Profile profile = 
serviceManager.getService(ProfileService.class).load(profileIDInput.getId());
 
         if (profile == null) {
             return null;
@@ -59,10 +61,10 @@ public class RemoveProfileFromListCommand extends 
BaseCommand<Boolean> {
                 .setPersistent(true)
                 .build();
 
-        int eventCode = serviceManager.getEventService().send(event);
+        int eventCode = 
serviceManager.getService(EventService.class).send(event);
 
         if (eventCode == EventService.PROFILE_UPDATED) {
-            serviceManager.getProfileService().save(event.getProfile());
+            
serviceManager.getService(ProfileService.class).save(event.getProfile());
 
             return true;
         }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/BaseCreateOrUpdateSegmentCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/BaseCreateOrUpdateSegmentCommand.java
index fd75783..70563b5 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/BaseCreateOrUpdateSegmentCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/BaseCreateOrUpdateSegmentCommand.java
@@ -34,7 +34,7 @@ public abstract class BaseCreateOrUpdateSegmentCommand<INPUT 
extends BaseSegment
     }
 
     protected Segment preparedSegmentWithoutCondition(final INPUT 
segmentInput) {
-        final SegmentService segmentService = 
serviceManager.getSegmentService();
+        final SegmentService segmentService = 
serviceManager.getService(SegmentService.class);
 
         final String segmentId = Strings.isNullOrEmpty(segmentInput.getId())
                 ? segmentInput.getName()
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/CreateOrUpdateSegmentCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/CreateOrUpdateSegmentCommand.java
index d0b9cf0..b116840 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/CreateOrUpdateSegmentCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/CreateOrUpdateSegmentCommand.java
@@ -18,6 +18,7 @@ package org.apache.unomi.graphql.commands.segments;
 
 import org.apache.unomi.api.conditions.Condition;
 import org.apache.unomi.api.segments.Segment;
+import org.apache.unomi.api.services.SegmentService;
 import org.apache.unomi.graphql.condition.factories.ProfileConditionFactory;
 import org.apache.unomi.graphql.types.input.CDPSegmentInput;
 import org.apache.unomi.graphql.types.output.CDPSegment;
@@ -51,7 +52,7 @@ public class CreateOrUpdateSegmentCommand extends 
BaseCreateOrUpdateSegmentComma
 
         segment.setCondition(condition);
 
-        serviceManager.getSegmentService().setSegmentDefinition(segment);
+        
serviceManager.getService(SegmentService.class).setSegmentDefinition(segment);
 
         return new CDPSegment(segment);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/CreateOrUpdateUnomiSegmentCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/CreateOrUpdateUnomiSegmentCommand.java
index 48fd1c1..fb49ee2 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/CreateOrUpdateUnomiSegmentCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/CreateOrUpdateUnomiSegmentCommand.java
@@ -18,6 +18,7 @@ package org.apache.unomi.graphql.commands.segments;
 
 import org.apache.unomi.api.conditions.Condition;
 import org.apache.unomi.api.segments.Segment;
+import org.apache.unomi.api.services.DefinitionsService;
 import org.apache.unomi.api.services.SegmentService;
 import org.apache.unomi.graphql.types.output.UnomiSegment;
 import org.apache.unomi.graphql.types.input.UnomiSegmentInput;
@@ -40,7 +41,7 @@ public class CreateOrUpdateUnomiSegmentCommand extends 
BaseCreateOrUpdateSegment
 
     @Override
     public UnomiSegment execute() {
-        final SegmentService segmentService = 
serviceManager.getSegmentService();
+        final SegmentService segmentService = 
serviceManager.getService(SegmentService.class);
 
         Segment segment = preparedSegmentWithoutCondition(segmentInput);
 
@@ -57,7 +58,7 @@ public class CreateOrUpdateUnomiSegmentCommand extends 
BaseCreateOrUpdateSegment
 
     @SuppressWarnings("unchecked")
     private Condition decorateCondition(final Condition condition) {
-        
condition.setConditionType(serviceManager.getDefinitionsService().getConditionType(condition.getConditionTypeId()));
+        
condition.setConditionType(serviceManager.getService(DefinitionsService.class).getConditionType(condition.getConditionTypeId()));
 
         if (condition.containsParameter("subConditions")) {
             final List<LinkedHashMap<String, Object>> subConditions = 
(List<LinkedHashMap<String, Object>>) condition.getParameter("subConditions");
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/DeleteSegmentCommand.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/DeleteSegmentCommand.java
index ee4f702..c00c5e8 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/DeleteSegmentCommand.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/commands/segments/DeleteSegmentCommand.java
@@ -18,6 +18,7 @@ package org.apache.unomi.graphql.commands.segments;
 
 import com.google.common.base.Strings;
 import org.apache.unomi.api.segments.DependentMetadata;
+import org.apache.unomi.api.services.SegmentService;
 import org.apache.unomi.graphql.commands.BaseCommand;
 
 public class DeleteSegmentCommand extends BaseCommand<Boolean> {
@@ -32,7 +33,7 @@ public class DeleteSegmentCommand extends 
BaseCommand<Boolean> {
 
     @Override
     public Boolean execute() {
-        final DependentMetadata dependentMetadata = 
serviceManager.getSegmentService().removeSegmentDefinition(segmentId, true);
+        final DependentMetadata dependentMetadata = 
serviceManager.getService(SegmentService.class).removeSegmentDefinition(segmentId,
 true);
 
         return dependentMetadata.getScorings().isEmpty() && 
dependentMetadata.getSegments().isEmpty();
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ConditionFactory.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ConditionFactory.java
index a38c918..c7fea26 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ConditionFactory.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ConditionFactory.java
@@ -46,7 +46,7 @@ public class ConditionFactory {
         this.conditionTypeId = conditionTypeId;
 
         final ServiceManager context = environment.getContext();
-        this.definitionsService = context.getDefinitionsService();
+        this.definitionsService = context.getService(DefinitionsService.class);
 
         this.conditionTypesMap = 
definitionsService.getAllConditionTypes().stream()
                 .collect(Collectors.toMap(ConditionType::getItemId, 
Function.identity()));
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ProfileConditionFactory.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ProfileConditionFactory.java
index aba3dd3..52a6028 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ProfileConditionFactory.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ProfileConditionFactory.java
@@ -21,6 +21,7 @@ import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.GeoPoint;
 import org.apache.unomi.api.PropertyType;
 import org.apache.unomi.api.conditions.Condition;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.schema.ComparisonConditionTranslator;
 import org.apache.unomi.graphql.schema.PropertyNameTranslator;
 import org.apache.unomi.graphql.schema.PropertyValueTypeHelper;
@@ -248,7 +249,7 @@ public class ProfileConditionFactory extends 
ConditionFactory {
     private void addDynamicProfilePropertiesCondition(final Map<String, 
Object> filterAsMap, final List<Condition> subConditions) {
         final ServiceManager serviceManager = environment.getContext();
 
-        final Map<String, PropertyType> propertyTypeMap = 
serviceManager.getProfileService().getTargetPropertyTypes("profiles")
+        final Map<String, PropertyType> propertyTypeMap = 
serviceManager.getService(ProfileService.class).getTargetPropertyTypes("profiles")
                 .stream().collect(Collectors.toMap(PropertyType::getItemId, 
Function.identity()));
 
         filterAsMap.forEach((propertyName, propertyValue) -> {
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfilePropertiesConditionParser.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfilePropertiesConditionParser.java
index 89ebb75..f649c80 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfilePropertiesConditionParser.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfilePropertiesConditionParser.java
@@ -19,6 +19,7 @@ package org.apache.unomi.graphql.condition.parsers;
 import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.PropertyType;
 import org.apache.unomi.api.conditions.Condition;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.schema.ComparisonConditionTranslator;
 import org.apache.unomi.graphql.services.ServiceManager;
 import org.apache.unomi.graphql.utils.DateUtils;
@@ -48,7 +49,7 @@ public class SegmentProfilePropertiesConditionParser {
 
         final ServiceManager serviceManager = environment.getContext();
 
-        profilePropertiesAsMap = 
serviceManager.getProfileService().getTargetPropertyTypes("profiles").stream()
+        profilePropertiesAsMap = 
serviceManager.getService(ProfileService.class).getTargetPropertyTypes("profiles").stream()
                 .collect(Collectors.toMap(PropertyType::getItemId, 
Function.identity()));
     }
 
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/consent/ConsentEventConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/consent/ConsentEventConnectionDataFetcher.java
index 05090e2..204dac3 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/consent/ConsentEventConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/consent/ConsentEventConnectionDataFetcher.java
@@ -21,6 +21,8 @@ import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.Event;
 import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.conditions.Condition;
+import org.apache.unomi.api.services.DefinitionsService;
+import org.apache.unomi.api.services.EventService;
 import org.apache.unomi.graphql.condition.factories.EventConditionFactory;
 import org.apache.unomi.graphql.fetchers.ConnectionParams;
 import org.apache.unomi.graphql.fetchers.EventConnectionDataFetcher;
@@ -39,11 +41,12 @@ public class ConsentEventConnectionDataFetcher extends 
EventConnectionDataFetche
 
         final EventConditionFactory factory = 
EventConditionFactory.get(environment);
 
-        final Condition eventCondition = 
factory.propertyCondition("eventType", "modifyConsent", 
serviceManager.getDefinitionsService());
-        final Condition consentCondition = 
factory.propertyCondition("target.token", consent.getToken(), 
serviceManager.getDefinitionsService());
+        DefinitionsService definitionsService = 
serviceManager.getService(DefinitionsService.class);
+        final Condition eventCondition = 
factory.propertyCondition("eventType", "modifyConsent", definitionsService);
+        final Condition consentCondition = 
factory.propertyCondition("target.token", consent.getToken(), 
definitionsService);
 
         final Condition andCondition = factory.booleanCondition("and", 
Arrays.asList(eventCondition, consentCondition));
-        final PartialList<Event> events = 
serviceManager.getEventService().searchEvents(andCondition, 0, 
ConnectionParams.DEFAULT_PAGE_SIZE);
+        final PartialList<Event> events = 
serviceManager.getService(EventService.class).searchEvents(andCondition, 0, 
ConnectionParams.DEFAULT_PAGE_SIZE);
 
         return createEventConnection(events);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/event/EventDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/event/EventDataFetcher.java
index b5b1351..e89e8ba 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/event/EventDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/event/EventDataFetcher.java
@@ -21,6 +21,7 @@ import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.Event;
 import org.apache.unomi.api.services.EventService;
 import org.apache.unomi.graphql.fetchers.BaseDataFetcher;
+import org.apache.unomi.graphql.schema.CDPEventInterfaceRegister;
 import org.apache.unomi.graphql.services.ServiceManager;
 import org.apache.unomi.graphql.types.output.CDPEventInterface;
 
@@ -35,10 +36,10 @@ public class EventDataFetcher extends 
BaseDataFetcher<CDPEventInterface> {
     @Override
     public CDPEventInterface get(DataFetchingEnvironment environment) throws 
Exception {
         final ServiceManager serviceManager = environment.getContext();
-        final EventService eventService = serviceManager.getEventService();
+        final EventService eventService = 
serviceManager.getService(EventService.class);
         final Event event = eventService.getEvent(id);
 
-        return event == null ? null : 
serviceManager.getEventInterfaceRegister().getEvent(event);
+        return event == null ? null : 
serviceManager.getService(CDPEventInterfaceRegister.class).getEvent(event);
     }
 
 }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/event/FindEventsConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/event/FindEventsConnectionDataFetcher.java
index 68d060f..0aca826 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/event/FindEventsConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/event/FindEventsConnectionDataFetcher.java
@@ -22,6 +22,7 @@ import org.apache.unomi.api.Event;
 import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.conditions.Condition;
 import org.apache.unomi.api.query.Query;
+import org.apache.unomi.api.services.EventService;
 import org.apache.unomi.graphql.condition.factories.EventConditionFactory;
 import org.apache.unomi.graphql.fetchers.ConnectionParams;
 import org.apache.unomi.graphql.fetchers.EventConnectionDataFetcher;
@@ -56,7 +57,7 @@ public class FindEventsConnectionDataFetcher extends 
EventConnectionDataFetcher
 
         final Query query = buildQuery(condition, orderByInput, params);
 
-        PartialList<Event> events = 
serviceManager.getEventService().search(query);
+        PartialList<Event> events = 
serviceManager.getService(EventService.class).search(query);
 
         return createEventConnection(events);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/GetListDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/GetListDataFetcher.java
index 123cea9..0cc9ddb 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/GetListDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/GetListDataFetcher.java
@@ -22,6 +22,7 @@ import org.apache.unomi.graphql.converters.UserListConverter;
 import org.apache.unomi.graphql.services.ServiceManager;
 import org.apache.unomi.graphql.types.output.CDPList;
 import org.apache.unomi.lists.UserList;
+import org.apache.unomi.services.UserListService;
 
 public class GetListDataFetcher implements DataFetcher<CDPList> {
 
@@ -35,7 +36,7 @@ public class GetListDataFetcher implements 
DataFetcher<CDPList> {
     public CDPList get(final DataFetchingEnvironment environment) throws 
Exception {
         final ServiceManager serviceManager = environment.getContext();
 
-        final UserList userList = 
serviceManager.getUserListServiceExt().load(listId);
+        final UserList userList = 
serviceManager.getService(UserListService.class).load(listId);
 
         return userList != null ? new 
CDPList(UserListConverter.convertToUnomiList(userList)) : null;
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/ListConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/ListConnectionDataFetcher.java
index 3be1c74..8cfb977 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/ListConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/ListConnectionDataFetcher.java
@@ -28,6 +28,7 @@ import org.apache.unomi.graphql.services.ServiceManager;
 import org.apache.unomi.graphql.types.input.CDPListFilterInput;
 import org.apache.unomi.graphql.types.input.CDPOrderByInput;
 import org.apache.unomi.graphql.types.output.CDPListConnection;
+import org.apache.unomi.services.UserListService;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -51,7 +52,7 @@ public class ListConnectionDataFetcher extends 
BaseConnectionDataFetcher<CDPList
 
         final Query query = buildQuery(createCondition(environment), 
orderByInput, params);
 
-        final PartialList<Metadata> metadataPartialList = 
serviceManager.getUserListServiceExt().getListMetadatas(query);
+        final PartialList<Metadata> metadataPartialList = 
serviceManager.getService(UserListService.class).getListMetadatas(query);
 
         return new CDPListConnection(metadataPartialList);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/ListProfileConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/ListProfileConnectionDataFetcher.java
index e37ca55..cb2aa88 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/ListProfileConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/list/ListProfileConnectionDataFetcher.java
@@ -22,6 +22,7 @@ import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.Profile;
 import org.apache.unomi.api.conditions.Condition;
 import org.apache.unomi.api.query.Query;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.condition.factories.ProfileConditionFactory;
 import org.apache.unomi.graphql.fetchers.ConnectionParams;
 import org.apache.unomi.graphql.fetchers.ProfileConnectionDataFetcher;
@@ -42,7 +43,7 @@ public class ListProfileConnectionDataFetcher extends 
ProfileConnectionDataFetch
 
         final Query query = buildQuery(listIdCondition, null, params);
 
-        PartialList<Profile> profiles = 
serviceManager.getProfileService().search(query, Profile.class);
+        PartialList<Profile> profiles = 
serviceManager.getService(ProfileService.class).search(query, Profile.class);
 
         return createProfileConnection(profiles);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/FindProfilesConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/FindProfilesConnectionDataFetcher.java
index 77d6b15..8bdf73d 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/FindProfilesConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/FindProfilesConnectionDataFetcher.java
@@ -22,6 +22,7 @@ import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.Profile;
 import org.apache.unomi.api.conditions.Condition;
 import org.apache.unomi.api.query.Query;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.condition.factories.ProfileConditionFactory;
 import org.apache.unomi.graphql.fetchers.ConnectionParams;
 import org.apache.unomi.graphql.fetchers.ProfileConnectionDataFetcher;
@@ -51,7 +52,7 @@ public class FindProfilesConnectionDataFetcher extends 
ProfileConnectionDataFetc
                 .profileFilterInputCondition(filterInput, 
environment.getArgument("filter"));
         final Query query = buildQuery(condition, orderByInput, params);
 
-        PartialList<Profile> profiles = 
serviceManager.getProfileService().search(query, Profile.class);
+        PartialList<Profile> profiles = 
serviceManager.getService(ProfileService.class).search(query, Profile.class);
 
         return createProfileConnection(profiles);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileAllEventsConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileAllEventsConnectionDataFetcher.java
index f29bede..5228f10 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileAllEventsConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileAllEventsConnectionDataFetcher.java
@@ -22,6 +22,7 @@ import org.apache.unomi.api.Event;
 import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.Profile;
 import org.apache.unomi.api.conditions.Condition;
+import org.apache.unomi.api.services.EventService;
 import org.apache.unomi.graphql.condition.factories.EventConditionFactory;
 import org.apache.unomi.graphql.fetchers.ConnectionParams;
 import org.apache.unomi.graphql.fetchers.EventConnectionDataFetcher;
@@ -58,7 +59,7 @@ public class ProfileAllEventsConnectionDataFetcher extends 
EventConnectionDataFe
             condition = 
eventConditionFactory.eventFilterInputCondition(filterInput, filterInputAsMap);
         }
 
-        final PartialList<Event> events = 
serviceManager.getEventService().searchEvents(condition, params.getOffset(), 
params.getSize());
+        final PartialList<Event> events = 
serviceManager.getService(EventService.class).searchEvents(condition, 
params.getOffset(), params.getSize());
 
         return createEventConnection(events);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileDataFetcher.java
index 1386ecb..0a566af 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileDataFetcher.java
@@ -38,7 +38,7 @@ public class ProfileDataFetcher extends 
BaseDataFetcher<CDPProfile> {
     @Override
     public CDPProfile get(DataFetchingEnvironment environment) throws 
Exception {
         final ServiceManager serviceManager = environment.getContext();
-        final ProfileService profileService = 
serviceManager.getProfileService();
+        final ProfileService profileService = 
serviceManager.getService(ProfileService.class);
 
         Profile profile = profileService.load(profileIDInput.getId());
 
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileLastEventsConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileLastEventsConnectionDataFetcher.java
index b3045b7..ebacd56 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileLastEventsConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileLastEventsConnectionDataFetcher.java
@@ -22,6 +22,7 @@ import org.apache.unomi.api.Event;
 import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.Profile;
 import org.apache.unomi.api.conditions.Condition;
+import org.apache.unomi.api.services.EventService;
 import org.apache.unomi.graphql.condition.factories.EventConditionFactory;
 import org.apache.unomi.graphql.fetchers.EventConnectionDataFetcher;
 import org.apache.unomi.graphql.services.ServiceManager;
@@ -45,7 +46,7 @@ public class ProfileLastEventsConnectionDataFetcher extends 
EventConnectionDataF
 
         final Condition condition = EventConditionFactory.get(environment)
                 .propertyCondition("profileId", profile.getItemId());
-        final PartialList<Event> events = 
serviceManager.getEventService().searchEvents(condition, 0, count);
+        final PartialList<Event> events = 
serviceManager.getService(EventService.class).searchEvents(condition, 0, count);
 
         return createEventConnection(events);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileListsDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileListsDataFetcher.java
index c71ac66..f5d91eb 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileListsDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileListsDataFetcher.java
@@ -47,7 +47,7 @@ public class ProfileListsDataFetcher extends 
BaseDataFetcher<List<CDPList>> {
     @SuppressWarnings("unchecked")
     public List<CDPList> get(DataFetchingEnvironment environment) throws 
Exception {
         final ServiceManager serviceManager = environment.getContext();
-        final UserListService userListService = 
serviceManager.getUserListService();
+        final UserListService userListService = 
serviceManager.getService(UserListService.class);
         final Map<String, Object> systemProperties = 
profile.getSystemProperties();
         if (systemProperties == null) {
             return null;
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileMatchesDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileMatchesDataFetcher.java
index 4b1b6e7..dd9f157 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileMatchesDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileMatchesDataFetcher.java
@@ -53,7 +53,7 @@ public class ProfileMatchesDataFetcher implements 
DataFetcher<List<CDPFilterMatc
         }
 
         final ServiceManager serviceManager = environment.getContext();
-        final ProfileService profileService = 
serviceManager.getProfileService();
+        final ProfileService profileService = 
serviceManager.getService(ProfileService.class);
         final Date now = new Date();
         final Session session = new Session("profile-matcher-" + 
now.getTime(), profile, now, "digitall");
 
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileSegmentsDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileSegmentsDataFetcher.java
index 78ff9ea..23b9dc7 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileSegmentsDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/ProfileSegmentsDataFetcher.java
@@ -43,7 +43,7 @@ public class ProfileSegmentsDataFetcher extends 
BaseDataFetcher<List<CDPSegment>
     @Override
     public List<CDPSegment> get(DataFetchingEnvironment environment) throws 
Exception {
         final ServiceManager serviceManager = environment.getContext();
-        final SegmentService segmentService = 
serviceManager.getSegmentService();
+        final SegmentService segmentService = 
serviceManager.getService(SegmentService.class);
 
         final List<Metadata> metadata = 
segmentService.getSegmentMetadatasForProfile(profile);
 
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/PropertiesConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/PropertiesConnectionDataFetcher.java
index a4c663c..098cef0 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/PropertiesConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/PropertiesConnectionDataFetcher.java
@@ -20,6 +20,7 @@ package org.apache.unomi.graphql.fetchers.profile;
 
 import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.PropertyType;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.fetchers.BaseConnectionDataFetcher;
 import org.apache.unomi.graphql.fetchers.ConnectionParams;
 import org.apache.unomi.graphql.services.ServiceManager;
@@ -38,7 +39,7 @@ public class PropertiesConnectionDataFetcher extends 
BaseConnectionDataFetcher<C
     public CDPPropertyConnection get(DataFetchingEnvironment environment) 
throws Exception {
         final ServiceManager serviceManager = environment.getContext();
         final ConnectionParams params = parseConnectionParams(environment);
-        final Collection<PropertyType> properties = 
serviceManager.getProfileService().getTargetPropertyTypes("profiles");
+        final Collection<PropertyType> properties = 
serviceManager.getService(ProfileService.class).getTargetPropertyTypes("profiles");
 
         return createPropertiesConnection(properties, params);
     }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/FindSegmentsConnectionDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/FindSegmentsConnectionDataFetcher.java
index 3696ea2..6f79b74 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/FindSegmentsConnectionDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/FindSegmentsConnectionDataFetcher.java
@@ -23,6 +23,7 @@ import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.conditions.Condition;
 import org.apache.unomi.api.query.Query;
 import org.apache.unomi.api.segments.Segment;
+import org.apache.unomi.api.services.SegmentService;
 import org.apache.unomi.graphql.condition.factories.ProfileConditionFactory;
 import org.apache.unomi.graphql.fetchers.ConnectionParams;
 import org.apache.unomi.graphql.fetchers.SegmentConnectionDataFetcher;
@@ -52,10 +53,11 @@ public class FindSegmentsConnectionDataFetcher extends 
SegmentConnectionDataFetc
 
         final Condition condition = 
ProfileConditionFactory.get(environment).segmentFilterInputCondition(filterInput);
         final Query query = buildQuery(condition, orderByInput, params);
-        final PartialList<Metadata> metas = 
serviceManager.getSegmentService().getSegmentMetadatas(query);
+        SegmentService segmentService = 
serviceManager.getService(SegmentService.class);
+        final PartialList<Metadata> metas = 
segmentService.getSegmentMetadatas(query);
 
         final List<Segment> segmentList = metas.getList().stream()
-                .map(meta -> 
serviceManager.getSegmentService().getSegmentDefinition(meta.getId()))
+                .map(meta -> segmentService.getSegmentDefinition(meta.getId()))
                 .collect(Collectors.toList());
 
         PartialList<Segment> segments = new PartialList<>(segmentList, 
metas.getOffset(), metas.getPageSize(), metas.getTotalSize(), 
metas.getTotalSizeRelation());
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/SegmentDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/SegmentDataFetcher.java
index 458b345..a51bd63 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/SegmentDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/SegmentDataFetcher.java
@@ -19,6 +19,7 @@ package org.apache.unomi.graphql.fetchers.segment;
 import graphql.schema.DataFetcher;
 import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.segments.Segment;
+import org.apache.unomi.api.services.SegmentService;
 import org.apache.unomi.graphql.services.ServiceManager;
 import org.apache.unomi.graphql.types.output.CDPSegment;
 
@@ -34,7 +35,7 @@ public class SegmentDataFetcher implements 
DataFetcher<CDPSegment> {
     public CDPSegment get(DataFetchingEnvironment environment) throws 
Exception {
         final ServiceManager serviceManager = environment.getContext();
 
-        final Segment segment = 
serviceManager.getSegmentService().getSegmentDefinition(segmentId);
+        final Segment segment = 
serviceManager.getService(SegmentService.class).getSegmentDefinition(segmentId);
 
         if (segment != null) {
             return new CDPSegment(segment);
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/UnomiSegmentDataFetcher.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/UnomiSegmentDataFetcher.java
index bd8fe2e..e32b4b5 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/UnomiSegmentDataFetcher.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/segment/UnomiSegmentDataFetcher.java
@@ -19,6 +19,7 @@ package org.apache.unomi.graphql.fetchers.segment;
 import graphql.schema.DataFetcher;
 import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.segments.Segment;
+import org.apache.unomi.api.services.SegmentService;
 import org.apache.unomi.graphql.services.ServiceManager;
 import org.apache.unomi.graphql.types.output.UnomiSegment;
 
@@ -34,7 +35,7 @@ public class UnomiSegmentDataFetcher implements 
DataFetcher<UnomiSegment> {
     public UnomiSegment get(final DataFetchingEnvironment environment) throws 
Exception {
         final ServiceManager serviceManager = environment.getContext();
 
-        final Segment segment = 
serviceManager.getSegmentService().getSegmentDefinition(segmentId);
+        final Segment segment = 
serviceManager.getService(SegmentService.class).getSegmentDefinition(segmentId);
 
         if (segment != null) {
             return new UnomiSegment(segment);
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/services/ServiceManager.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/services/ServiceManager.java
index f8b4e11..5ca7f4a 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/services/ServiceManager.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/services/ServiceManager.java
@@ -27,130 +27,24 @@ import 
org.apache.unomi.graphql.schema.CDPProfileInterfaceRegister;
 import org.apache.unomi.graphql.schema.CDPPropertyInterfaceRegister;
 import org.apache.unomi.graphql.schema.GraphQLSchemaUpdater;
 import org.apache.unomi.persistence.spi.PersistenceService;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
 
 @Component(service = ServiceManager.class)
 public class ServiceManager {
 
-    private ProfileService profileService;
-    private SegmentService segmentService;
-    private EventService eventService;
-    private DefinitionsService definitionsService;
-    private GraphQLSchemaUpdater graphQLSchemaUpdater;
-    private PrivacyService privacyService;
-    private UserListService userListService;
-    private org.apache.unomi.services.UserListService userListServiceExt;
-    private CDPEventInterfaceRegister eventInterfaceRegister;
-    private CDPProfileInterfaceRegister profileInterfaceRegister;
-    private CDPPropertyInterfaceRegister propertyInterfaceRegister;
-    private PersistenceService persistenceService;
+    private BundleContext bundleContext;
 
-    @Reference
-    public void setProfileService(ProfileService profileService) {
-        this.profileService = profileService;
+    @Activate
+    private void activate(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
     }
-
-    @Reference
-    public void setSegmentService(SegmentService segmentService) {
-        this.segmentService = segmentService;
-    }
-
-    @Reference
-    public void setDefinitionsService(DefinitionsService definitionsService) {
-        this.definitionsService = definitionsService;
-    }
-
-    @Reference
-    public void setEventService(EventService eventService) {
-        this.eventService = eventService;
-    }
-
-    @Reference
-    public void setGraphQLSchemaUpdater(GraphQLSchemaUpdater 
graphQLSchemaUpdater) {
-        this.graphQLSchemaUpdater = graphQLSchemaUpdater;
-    }
-
-    @Reference
-    public void setUserListService(UserListService userListService) {
-        this.userListService = userListService;
-    }
-
-    @Reference
-    public void setPrivacyService(PrivacyService privacyService) {
-        this.privacyService = privacyService;
-    }
-
-    @Reference
-    public void setEventInterfaceRegister(CDPEventInterfaceRegister 
eventInterfaceRegister) {
-        this.eventInterfaceRegister = eventInterfaceRegister;
-    }
-
-    @Reference
-    public void setProfileInterfaceRegister(CDPProfileInterfaceRegister 
profileInterfaceRegister) {
-        this.profileInterfaceRegister = profileInterfaceRegister;
-    }
-
-    @Reference
-    public void setPropertyInterfaceRegister(CDPPropertyInterfaceRegister 
propertyInterfaceRegister) {
-        this.propertyInterfaceRegister = propertyInterfaceRegister;
-    }
-
-    @Reference
-    public void 
setUserListServiceExt(org.apache.unomi.services.UserListService 
userListServiceExt) {
-        this.userListServiceExt = userListServiceExt;
-    }
-
-    @Reference
-    public void setPersistenceService(PersistenceService persistenceService) {
-        this.persistenceService = persistenceService;
-    }
-
-    public ProfileService getProfileService() {
-        return profileService;
-    }
-
-    public SegmentService getSegmentService() {
-        return segmentService;
-    }
-
-    public DefinitionsService getDefinitionsService() {
-        return definitionsService;
-    }
-
-    public EventService getEventService() {
-        return eventService;
-    }
-
-    public GraphQLSchemaUpdater getGraphQLSchemaUpdater() {
-        return graphQLSchemaUpdater;
-    }
-
-    public PrivacyService getPrivacyService() {
-        return privacyService;
+    public <T> T getService(Class<T> serviceClass) {
+        ServiceReference<T> serviceReference = 
bundleContext.getServiceReference(serviceClass);
+        return bundleContext.getService(serviceReference);
     }
 
-    public UserListService getUserListService() {
-        return userListService;
-    }
-
-    public CDPEventInterfaceRegister getEventInterfaceRegister() {
-        return eventInterfaceRegister;
-    }
-
-    public CDPProfileInterfaceRegister getProfileInterfaceRegister() {
-        return profileInterfaceRegister;
-    }
-
-    public org.apache.unomi.services.UserListService getUserListServiceExt() {
-        return userListServiceExt;
-    }
-
-    public CDPPropertyInterfaceRegister getPropertyInterfaceRegister() {
-        return propertyInterfaceRegister;
-    }
-
-    public PersistenceService getPersistenceService() {
-        return persistenceService;
-    }
 }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/input/BaseProfileEventProcessor.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/input/BaseProfileEventProcessor.java
index d7e8081..077db04 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/input/BaseProfileEventProcessor.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/input/BaseProfileEventProcessor.java
@@ -18,6 +18,7 @@ package org.apache.unomi.graphql.types.input;
 
 import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.Profile;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.services.ServiceManager;
 import org.apache.unomi.graphql.utils.EventBuilder;
 
@@ -29,7 +30,7 @@ public abstract class BaseProfileEventProcessor implements 
CDPEventProcessor {
     protected Profile loadProfile(final Map<String, Object> eventInputAsMap, 
final DataFetchingEnvironment environment) {
         final Map<String, Object> cdpProfileId = (Map<String, Object>) 
eventInputAsMap.get("cdp_profileID");
         final ServiceManager serviceManager = environment.getContext();
-        return serviceManager.getProfileService().load((String) 
cdpProfileId.get("id"));
+        return serviceManager.getService(ProfileService.class).load((String) 
cdpProfileId.get("id"));
     }
 
     protected final EventBuilder eventBuilder(final Profile profile) {
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPEventEdge.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPEventEdge.java
index b720298..e6c7022 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPEventEdge.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPEventEdge.java
@@ -21,6 +21,7 @@ import graphql.annotations.annotationTypes.GraphQLName;
 import graphql.annotations.annotationTypes.GraphQLNonNull;
 import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.Event;
+import org.apache.unomi.graphql.schema.CDPEventInterfaceRegister;
 import org.apache.unomi.graphql.services.ServiceManager;
 
 @GraphQLName("CDP_EventEdge")
@@ -46,7 +47,7 @@ public class CDPEventEdge {
     public CDPEventInterface node(final DataFetchingEnvironment environment) {
         final ServiceManager serviceManager = environment.getContext();
 
-        return serviceManager.getEventInterfaceRegister().getEvent(getEvent());
+        return 
serviceManager.getService(CDPEventInterfaceRegister.class).getEvent(getEvent());
     }
 
 }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPEventInterface.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPEventInterface.java
index a057e69..df20718 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPEventInterface.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPEventInterface.java
@@ -26,6 +26,7 @@ import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.Event;
 import org.apache.unomi.api.GeoPoint;
 import org.apache.unomi.api.Profile;
+import org.apache.unomi.api.services.ProfileService;
 import org.apache.unomi.graphql.services.ServiceManager;
 import org.apache.unomi.graphql.types.resolvers.CDPEventInterfaceResolver;
 import org.apache.unomi.graphql.utils.DateUtils;
@@ -79,7 +80,7 @@ public interface CDPEventInterface {
         } else if (getEvent().getProfileId() != null) {
             ServiceManager serviceManager = environment.getContext();
 
-            Profile profile = 
serviceManager.getProfileService().load(getEvent().getProfileId());
+            Profile profile = 
serviceManager.getService(ProfileService.class).load(getEvent().getProfileId());
 
             return new CDPProfile(profile);
         } else {
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPListsUpdateEvent.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPListsUpdateEvent.java
index 505de95..6b2eebe 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPListsUpdateEvent.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPListsUpdateEvent.java
@@ -27,6 +27,7 @@ import org.apache.unomi.api.query.Query;
 import org.apache.unomi.graphql.condition.factories.ConditionFactory;
 import org.apache.unomi.graphql.converters.UserListConverter;
 import org.apache.unomi.graphql.services.ServiceManager;
+import org.apache.unomi.services.UserListService;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -75,7 +76,7 @@ public class CDPListsUpdateEvent implements CDPEventInterface 
{
         final Query query = new Query();
         query.setCondition(factory.propertiesCondition("itemId", "in", 
listIds));
 
-        final PartialList<Metadata> partialList = 
serviceManager.getUserListServiceExt().getListMetadatas(query);
+        final PartialList<Metadata> partialList = 
serviceManager.getService(UserListService.class).getListMetadatas(query);
 
         if (partialList == null || partialList.getList() == null) {
             return null;
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPProfileEdge.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPProfileEdge.java
index 2dfd4fd..66df832 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPProfileEdge.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPProfileEdge.java
@@ -21,6 +21,7 @@ import graphql.annotations.annotationTypes.GraphQLName;
 import graphql.annotations.annotationTypes.GraphQLNonNull;
 import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.Profile;
+import org.apache.unomi.graphql.schema.CDPProfileInterfaceRegister;
 import org.apache.unomi.graphql.services.ServiceManager;
 
 @GraphQLName("CDP_ProfileEdge")
@@ -42,7 +43,7 @@ public class CDPProfileEdge {
     public CDPProfileInterface node(final DataFetchingEnvironment environment) 
{
         final ServiceManager serviceManager = environment.getContext();
 
-        return 
serviceManager.getProfileInterfaceRegister().getProfile(profile);
+        return 
serviceManager.getService(CDPProfileInterfaceRegister.class).getProfile(profile);
     }
 
 }
diff --git 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPPropertyEdge.java
 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPPropertyEdge.java
index 50aa39e..ebaf8a4 100644
--- 
a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPPropertyEdge.java
+++ 
b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPPropertyEdge.java
@@ -22,6 +22,7 @@ import graphql.annotations.annotationTypes.GraphQLNonNull;
 import graphql.annotations.annotationTypes.GraphQLPrettify;
 import graphql.schema.DataFetchingEnvironment;
 import org.apache.unomi.api.PropertyType;
+import org.apache.unomi.graphql.schema.CDPPropertyInterfaceRegister;
 import org.apache.unomi.graphql.services.ServiceManager;
 
 @GraphQLName("CDP_ProfilePropertyEdge")
@@ -38,7 +39,7 @@ public class CDPPropertyEdge {
     public CDPPropertyInterface getNode(final DataFetchingEnvironment 
environment) {
         final ServiceManager serviceManager = environment.getContext();
 
-        return serviceManager.getPropertyInterfaceRegister().getProperty(type);
+        return 
serviceManager.getService(CDPPropertyInterfaceRegister.class).getProperty(type);
     }
 
     @GraphQLNonNull

Reply via email to