From a103d45d7bddd7f6f8899af4c5406d69dfc501ad Mon Sep 17 00:00:00 2001 From: dseurotech Date: Thu, 1 Aug 2024 15:41:20 +0200 Subject: [PATCH] :bug: self-provided objects are not subject to interception, damn you guice Signed-off-by: dseurotech --- .../device/registry/DeviceRegistryModule.java | 23 ++----------------- .../internal/DeviceConnectionServiceImpl.java | 14 +++++++---- .../DeviceRegistryLocatorConfiguration.java | 5 +++- .../tag/test/TagLocatorConfiguration.java | 17 +++++--------- 4 files changed, 21 insertions(+), 38 deletions(-) diff --git a/service/device/registry/internal/src/main/java/org/eclipse/kapua/service/device/registry/DeviceRegistryModule.java b/service/device/registry/internal/src/main/java/org/eclipse/kapua/service/device/registry/DeviceRegistryModule.java index 4a443651e85..789328be072 100644 --- a/service/device/registry/internal/src/main/java/org/eclipse/kapua/service/device/registry/DeviceRegistryModule.java +++ b/service/device/registry/internal/src/main/java/org/eclipse/kapua/service/device/registry/DeviceRegistryModule.java @@ -93,27 +93,8 @@ protected void configureModule() { bind(DeviceEventFactory.class).to(DeviceEventFactoryImpl.class).in(Singleton.class); bind(DeviceLifeCycleService.class).to(DeviceLifeCycleServiceImpl.class).in(Singleton.class); bind(KapuaDeviceRegistrySettings.class).in(Singleton.class); - } - - @Provides - @Singleton - public DeviceConnectionService deviceConnectionService( - Map, ServiceConfigurationManager> serviceConfigurationManagersByServiceClass, - AuthorizationService authorizationService, - PermissionFactory permissionFactory, - DeviceConnectionFactory entityFactory, - @Named("DeviceRegistryTransactionManager") TxManager txManager, - DeviceConnectionRepository repository, - Map availableDeviceConnectionAdapters, - EventStorer eventStorer) { - return new DeviceConnectionServiceImpl(serviceConfigurationManagersByServiceClass.get(DeviceConnectionService.class), - authorizationService, - permissionFactory, - entityFactory, - txManager, - repository, - availableDeviceConnectionAdapters, - eventStorer); + //This needs to be auto-created by guice, otherwise the RaiseServiceEventInterceptor will not work (sic!) + bind(DeviceConnectionService.class).to(DeviceConnectionServiceImpl.class).in(Singleton.class); } @ProvidesIntoSet diff --git a/service/device/registry/internal/src/main/java/org/eclipse/kapua/service/device/registry/connection/internal/DeviceConnectionServiceImpl.java b/service/device/registry/internal/src/main/java/org/eclipse/kapua/service/device/registry/connection/internal/DeviceConnectionServiceImpl.java index 1b47dad4456..b48ee3a9ce0 100644 --- a/service/device/registry/internal/src/main/java/org/eclipse/kapua/service/device/registry/connection/internal/DeviceConnectionServiceImpl.java +++ b/service/device/registry/internal/src/main/java/org/eclipse/kapua/service/device/registry/connection/internal/DeviceConnectionServiceImpl.java @@ -15,6 +15,10 @@ import java.util.Map; import java.util.Set; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import org.apache.commons.lang.NotImplementedException; import org.eclipse.kapua.KapuaDuplicateNameException; import org.eclipse.kapua.KapuaEntityNotFoundException; @@ -51,6 +55,7 @@ * * @since 1.0.0 */ +@Singleton public class DeviceConnectionServiceImpl extends KapuaConfigurableServiceBase implements DeviceConnectionService { private static final Logger LOG = LoggerFactory.getLogger(DeviceConnectionServiceImpl.class); @@ -63,20 +68,19 @@ public class DeviceConnectionServiceImpl extends KapuaConfigurableServiceBase im /** * Constructor. * - * @param serviceConfigurationManager - * The {@link ServiceConfigurationManager} instance. * @since 2.0.0 */ + @Inject public DeviceConnectionServiceImpl( - ServiceConfigurationManager serviceConfigurationManager, + Map, ServiceConfigurationManager> serviceConfigurationManagersByServiceClass, AuthorizationService authorizationService, PermissionFactory permissionFactory, DeviceConnectionFactory entityFactory, - TxManager txManager, + @Named("DeviceRegistryTransactionManager") TxManager txManager, DeviceConnectionRepository repository, Map availableDeviceConnectionAdapters, EventStorer eventStorer) { - super(txManager, serviceConfigurationManager, Domains.DEVICE_CONNECTION, authorizationService, permissionFactory); + super(txManager, serviceConfigurationManagersByServiceClass.get(DeviceConnectionService.class), Domains.DEVICE_CONNECTION, authorizationService, permissionFactory); this.entityFactory = entityFactory; this.repository = repository; this.availableDeviceConnectionAdapters = availableDeviceConnectionAdapters; diff --git a/service/device/registry/test/src/test/java/org/eclipse/kapua/service/device/registry/test/DeviceRegistryLocatorConfiguration.java b/service/device/registry/test/src/test/java/org/eclipse/kapua/service/device/registry/test/DeviceRegistryLocatorConfiguration.java index f6c24213bc5..b22f83a39f9 100644 --- a/service/device/registry/test/src/test/java/org/eclipse/kapua/service/device/registry/test/DeviceRegistryLocatorConfiguration.java +++ b/service/device/registry/test/src/test/java/org/eclipse/kapua/service/device/registry/test/DeviceRegistryLocatorConfiguration.java @@ -155,8 +155,11 @@ protected void configure() { final KapuaJpaRepositoryConfiguration jpaRepoConfig = new KapuaJpaRepositoryConfiguration(); final TxManager txManager = new KapuaJpaTxManagerFactory(maxInsertAttempts).create("kapua-device"); final EventStorer eventStorer = new EventStorerImpl(new EventStoreRecordImplJpaRepository(jpaRepoConfig)); + final Map, ServiceConfigurationManager> classServiceConfigurationManagerMap = new HashMap<>(); + classServiceConfigurationManagerMap.put(DeviceConnectionService.class, Mockito.mock(ServiceConfigurationManager.class)); + final DeviceConnectionService deviceConnectionService = new DeviceConnectionServiceImpl( - Mockito.mock(ServiceConfigurationManager.class), + classServiceConfigurationManagerMap, mockedAuthorization, permissionFactory, new DeviceConnectionFactoryImpl(), diff --git a/service/tag/test/src/test/java/org/eclipse/kapua/service/tag/test/TagLocatorConfiguration.java b/service/tag/test/src/test/java/org/eclipse/kapua/service/tag/test/TagLocatorConfiguration.java index 213cab36a38..4c939064cbf 100644 --- a/service/tag/test/src/test/java/org/eclipse/kapua/service/tag/test/TagLocatorConfiguration.java +++ b/service/tag/test/src/test/java/org/eclipse/kapua/service/tag/test/TagLocatorConfiguration.java @@ -13,6 +13,8 @@ package org.eclipse.kapua.service.tag.test; import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import org.eclipse.kapua.KapuaException; import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; @@ -147,9 +149,11 @@ protected void configure() { final KapuaJpaRepositoryConfiguration jpaRepoConfig = new KapuaJpaRepositoryConfiguration(); final EventStorer eventStorer = new EventStorerImpl(new EventStoreRecordImplJpaRepository(jpaRepoConfig)); bind(TagRepository.class).toInstance(new TagImplJpaRepository(jpaRepoConfig)); + final Map, ServiceConfigurationManager> classServiceConfigurationManagerMap = new HashMap<>(); + classServiceConfigurationManagerMap.put(DeviceConnectionService.class, Mockito.mock(ServiceConfigurationManager.class)); final DeviceConnectionServiceImpl deviceConnectionService = new DeviceConnectionServiceImpl( - Mockito.mock(ServiceConfigurationManager.class), + classServiceConfigurationManagerMap, mockedAuthorization, permissionFactory, new DeviceConnectionFactoryImpl(), @@ -198,16 +202,7 @@ protected void configure() { deviceValidation) ); bind(DeviceFactory.class).toInstance(new DeviceFactoryImpl()); - - bind(DeviceConnectionService.class).toInstance(new DeviceConnectionServiceImpl( - Mockito.mock(ServiceConfigurationManager.class), - mockedAuthorization, - permissionFactory, - new DeviceConnectionFactoryImpl(), - new KapuaJpaTxManagerFactory(maxInsertAttempts).create("kapua-device"), - new DeviceConnectionImplJpaRepository(jpaRepoConfig), - Collections.emptyMap(), - eventStorer)); + bind(DeviceConnectionService.class).toInstance(deviceConnectionService); bind(DeviceConnectionFactory.class).to(DeviceConnectionFactoryImpl.class); bind(DeviceRepository.class).toInstance(new DeviceImplJpaRepository(jpaRepoConfig));