diff --git a/assembly/broker-artemis/descriptors/kapua-broker-artemis.xml b/assembly/broker-artemis/descriptors/kapua-broker-artemis.xml index a70d694dfdb..2ca720af36b 100644 --- a/assembly/broker-artemis/descriptors/kapua-broker-artemis.xml +++ b/assembly/broker-artemis/descriptors/kapua-broker-artemis.xml @@ -130,6 +130,8 @@ <include>${pom.groupId}:kapua-openid-api</include> <include>${pom.groupId}:kapua-openid-provider</include> <include>${pom.groupId}:kapua-service-api</include> + <include>${pom.groupId}:kapua-service-commons-utils-api</include> + <include>${pom.groupId}:kapua-service-commons-utils-internal</include> <include>${pom.groupId}:kapua-security-authentication-api</include> <include>${pom.groupId}:kapua-security-authorization-api</include> <include>${pom.groupId}:kapua-security-certificate-api</include> diff --git a/commons/src/main/java/org/eclipse/kapua/commons/configuration/AbstractKapuaConfigurableResourceLimitedService.java b/commons/src/main/java/org/eclipse/kapua/commons/configuration/AbstractKapuaConfigurableResourceLimitedService.java index 96db40ad7fa..719a0a0addf 100644 --- a/commons/src/main/java/org/eclipse/kapua/commons/configuration/AbstractKapuaConfigurableResourceLimitedService.java +++ b/commons/src/main/java/org/eclipse/kapua/commons/configuration/AbstractKapuaConfigurableResourceLimitedService.java @@ -71,7 +71,7 @@ public abstract class AbstractKapuaConfigurableResourceLimitedService< //TODO: make final as soon as deprecated constructors are removed - private AccountChildrenFinder accountChildrenFinder; + private AccountRelativeFinder accountRelativeFinder; private F factory; //TODO: remove as soon as deprecated constructors are removed private final Class<F> factoryClass; @@ -109,7 +109,7 @@ protected AbstractKapuaConfigurableResourceLimitedService( * @param entityManagerFactory The {@link EntityManagerFactory} that handles persistence unit * @param abstractCacheFactory The {@link CacheFactory} that handles caching of the entities * @since 1.2.0 - * @deprecated Since 2.0.0. Please use {@link #AbstractKapuaConfigurableResourceLimitedService(String, Domain, EntityManagerFactory, EntityCacheFactory, KapuaEntityFactory, PermissionFactory, AuthorizationService, AccountChildrenFinder, RootUserTester)} This constructor may be removed in a next release + * @deprecated Since 2.0.0. Please use {@link #AbstractKapuaConfigurableResourceLimitedService(String, Domain, EntityManagerFactory, EntityCacheFactory, KapuaEntityFactory, PermissionFactory, AuthorizationService, AccountRelativeFinder, RootUserTester)} This constructor may be removed in a next release */ @Deprecated protected AbstractKapuaConfigurableResourceLimitedService( @@ -127,7 +127,7 @@ protected AbstractKapuaConfigurableResourceLimitedService( */ this.factoryClass = factoryClass; this.factory = null; - this.accountChildrenFinder = null; + this.accountRelativeFinder = null; } /** @@ -149,12 +149,12 @@ protected AbstractKapuaConfigurableResourceLimitedService(String pid, F factory, PermissionFactory permissionFactory, AuthorizationService authorizationService, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, RootUserTester rootUserTester) { super(pid, domain, entityManagerFactory, abstractCacheFactory, permissionFactory, authorizationService, rootUserTester); this.factory = factory; this.factoryClass = null; //TODO: not needed for this construction path, remove as soon as the deprecated constructor is removed - this.accountChildrenFinder = accountChildrenFinder; + this.accountRelativeFinder = accountRelativeFinder; } @Override @@ -244,7 +244,7 @@ private long allowedChildEntities(KapuaId scopeId, KapuaId targetScopeId, Map<St // Current used entities long currentUsedEntities = this.count(countQuery); - final KapuaListResult<Account> childAccounts = txManager.execute(tx -> getAccountChildrenFinder().findChildren(scopeId, Optional.ofNullable(targetScopeId))); + final KapuaListResult<Account> childAccounts = txManager.execute(tx -> getAccountRelativeFinder().findChildren(scopeId, Optional.ofNullable(targetScopeId))); // Resources assigned to children long childCount = 0; for (Account childAccount : childAccounts.getItems()) { @@ -285,14 +285,14 @@ protected F getFactory() { * This instance should be provided by the Locator, but in most cases when this class is instantiated through the deprecated constructor the Locator is not yet ready, * therefore fetching of the required instance is demanded to this artificial getter. * - * @return The instantiated (hopefully) {@link AccountChildrenFinder} instance + * @return The instantiated (hopefully) {@link AccountRelativeFinder} instance */ - private AccountChildrenFinder getAccountChildrenFinder() { - if (accountChildrenFinder == null) { + private AccountRelativeFinder getAccountRelativeFinder() { + if (accountRelativeFinder == null) { KapuaLocator locator = KapuaLocator.getInstance(); - this.accountChildrenFinder = locator.getService(AccountChildrenFinder.class); + this.accountRelativeFinder = locator.getService(AccountRelativeFinder.class); } - return accountChildrenFinder; + return accountRelativeFinder; } } diff --git a/commons/src/main/java/org/eclipse/kapua/commons/configuration/AccountChildrenFinder.java b/commons/src/main/java/org/eclipse/kapua/commons/configuration/AccountRelativeFinder.java similarity index 74% rename from commons/src/main/java/org/eclipse/kapua/commons/configuration/AccountChildrenFinder.java rename to commons/src/main/java/org/eclipse/kapua/commons/configuration/AccountRelativeFinder.java index f1756bc9281..0d5118b5721 100644 --- a/commons/src/main/java/org/eclipse/kapua/commons/configuration/AccountChildrenFinder.java +++ b/commons/src/main/java/org/eclipse/kapua/commons/configuration/AccountRelativeFinder.java @@ -17,14 +17,15 @@ import org.eclipse.kapua.service.KapuaService; import org.eclipse.kapua.service.account.AccountListResult; +import java.util.List; import java.util.Optional; /** - * Service to retrieve all child accounts for a given scope + * Service to retrieve relative accounts for a given scope * * @since 2.0.0 */ -public interface AccountChildrenFinder extends KapuaService { +public interface AccountRelativeFinder extends KapuaService { /** * @param scopeId The scope id - must be provided @@ -33,4 +34,11 @@ public interface AccountChildrenFinder extends KapuaService { * @throws KapuaException */ AccountListResult findChildren(KapuaId scopeId, Optional<KapuaId> targetScopeId) throws KapuaException; + + /** + * @param accountId The id of the account to lookup + * @return The list of parent ids for the target account + * @throws KapuaException + */ + List<KapuaId> findParentIds(KapuaId accountId) throws KapuaException; } diff --git a/commons/src/main/java/org/eclipse/kapua/commons/configuration/ResourceLimitedServiceConfigurationManagerImpl.java b/commons/src/main/java/org/eclipse/kapua/commons/configuration/ResourceLimitedServiceConfigurationManagerImpl.java index 931b8f1c357..e7518c120ce 100644 --- a/commons/src/main/java/org/eclipse/kapua/commons/configuration/ResourceLimitedServiceConfigurationManagerImpl.java +++ b/commons/src/main/java/org/eclipse/kapua/commons/configuration/ResourceLimitedServiceConfigurationManagerImpl.java @@ -32,17 +32,17 @@ public class ResourceLimitedServiceConfigurationManagerImpl extends ServiceConfigurationManagerImpl implements ServiceConfigurationManager { - private final AccountChildrenFinder accountChildrenFinder; + private final AccountRelativeFinder accountRelativeFinder; private final UsedEntitiesCounter usedEntitiesCounter; public ResourceLimitedServiceConfigurationManagerImpl( String pid, ServiceConfigRepository serviceConfigRepository, RootUserTester rootUserTester, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, UsedEntitiesCounter usedEntitiesCounter) { super(pid, serviceConfigRepository, rootUserTester); - this.accountChildrenFinder = accountChildrenFinder; + this.accountRelativeFinder = accountRelativeFinder; this.usedEntitiesCounter = usedEntitiesCounter; } @@ -135,7 +135,7 @@ private long allowedChildEntities(TxContext txContext, KapuaId scopeId, Optional // Current used entities long currentUsedEntities = usedEntitiesCounter.countEntitiesInScope(txContext, scopeId); - final AccountListResult childAccounts = accountChildrenFinder.findChildren(scopeId, targetScopeId); + final AccountListResult childAccounts = accountRelativeFinder.findChildren(scopeId, targetScopeId); // Resources assigned to children long childCount = 0; for (Account childAccount : childAccounts.getItems()) { diff --git a/commons/src/main/java/org/eclipse/kapua/commons/model/query/AbstractKapuaForwardableEntityQuery.java b/commons/src/main/java/org/eclipse/kapua/commons/model/query/AbstractKapuaForwardableEntityQuery.java new file mode 100644 index 00000000000..40b0954c96c --- /dev/null +++ b/commons/src/main/java/org/eclipse/kapua/commons/model/query/AbstractKapuaForwardableEntityQuery.java @@ -0,0 +1,61 @@ +/******************************************************************************* + * Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.commons.model.query; + +import org.eclipse.kapua.model.id.KapuaId; +import org.eclipse.kapua.model.query.KapuaForwardableEntityQuery; +import org.eclipse.kapua.model.query.KapuaQuery; + +public class AbstractKapuaForwardableEntityQuery extends AbstractKapuaNamedQuery implements KapuaForwardableEntityQuery { + + protected Boolean includeInherited = Boolean.FALSE; + + /** + * Constructor. + * + */ + public AbstractKapuaForwardableEntityQuery() { + super(); + } + + /** + * Constructor. + * + * @param scopeId The {@link #getScopeId()}. + */ + public AbstractKapuaForwardableEntityQuery(KapuaId scopeId) { + super(scopeId); + } + + /** + * Clone constructor. + * + * @param query The {@link AbstractKapuaForwardableEntityQuery} to clone. + */ + public AbstractKapuaForwardableEntityQuery(KapuaQuery query) { + super(query); + if(query instanceof KapuaForwardableEntityQuery) { + this.includeInherited = ((KapuaForwardableEntityQuery) query).getIncludeInherited(); + } + } + + @Override + public Boolean getIncludeInherited() { + return includeInherited; + } + + @Override + public void setIncludeInherited(Boolean includeInherited) { + this.includeInherited = includeInherited; + } +} diff --git a/pom.xml b/pom.xml index 7c81df1a888..9eecf90a22e 100644 --- a/pom.xml +++ b/pom.xml @@ -1012,6 +1012,16 @@ <artifactId>kapua-service-api</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-service-commons-utils-api</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-service-commons-utils-internal</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.eclipse.kapua</groupId> <artifactId>kapua-service-elasticsearch-client-api</artifactId> @@ -1032,6 +1042,16 @@ <artifactId>kapua-service-storable-internal</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-service-utils-api</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-service-utils-internal</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.eclipse.kapua</groupId> <artifactId>kapua-service-client</artifactId> diff --git a/service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountModule.java b/service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountModule.java index 550eb1a9a5d..65dcd0b5d55 100644 --- a/service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountModule.java +++ b/service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountModule.java @@ -15,7 +15,7 @@ import com.google.inject.Module; import com.google.inject.Provides; import com.google.inject.multibindings.ProvidesIntoSet; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.CachingServiceConfigRepository; import org.eclipse.kapua.commons.configuration.ResourceLimitedServiceConfigurationManagerImpl; import org.eclipse.kapua.commons.configuration.RootUserTester; @@ -71,10 +71,10 @@ public Domain accountDomain() { @Provides @Singleton - AccountChildrenFinder accountChildrenFinder( + AccountRelativeFinder accountRelativeFinder( AccountFactory accountFactory, AccountService accountService) { - return new AccountChildrenFinderImpl( + return new AccountRelativeFinderImpl( accountFactory, accountService); } @@ -132,7 +132,7 @@ AccountService accountService(AccountRepository accountRepository, ServiceConfigurationManager accountServiceConfigurationManager( AccountFactory factory, RootUserTester rootUserTester, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, AccountRepository accountRepository, KapuaJpaRepositoryConfiguration jpaRepoConfig, EntityCacheFactory entityCacheFactory @@ -145,7 +145,7 @@ ServiceConfigurationManager accountServiceConfigurationManager( entityCacheFactory.createCache("AbstractKapuaConfigurableServiceCacheId") ), rootUserTester, - accountChildrenFinder, + accountRelativeFinder, new UsedEntitiesCounterImpl( factory, accountRepository) diff --git a/service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountChildrenFinderImpl.java b/service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountRelativeFinderImpl.java similarity index 61% rename from service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountChildrenFinderImpl.java rename to service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountRelativeFinderImpl.java index b2c35fdc121..d187ccab8d8 100644 --- a/service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountChildrenFinderImpl.java +++ b/service/account/internal/src/main/java/org/eclipse/kapua/service/account/internal/AccountRelativeFinderImpl.java @@ -12,28 +12,35 @@ *******************************************************************************/ package org.eclipse.kapua.service.account.internal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import javax.inject.Inject; + import org.eclipse.kapua.KapuaException; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; +import org.eclipse.kapua.commons.model.id.KapuaEid; import org.eclipse.kapua.commons.security.KapuaSecurityUtils; import org.eclipse.kapua.model.KapuaEntityAttributes; import org.eclipse.kapua.model.id.KapuaId; import org.eclipse.kapua.model.query.predicate.AttributePredicate; import org.eclipse.kapua.service.KapuaService; +import org.eclipse.kapua.service.account.Account; import org.eclipse.kapua.service.account.AccountFactory; import org.eclipse.kapua.service.account.AccountListResult; import org.eclipse.kapua.service.account.AccountQuery; import org.eclipse.kapua.service.account.AccountService; -import javax.inject.Inject; -import java.util.Optional; - -public class AccountChildrenFinderImpl implements AccountChildrenFinder, KapuaService { +public class AccountRelativeFinderImpl implements AccountRelativeFinder, KapuaService { private final AccountFactory accountFactory; private final AccountService accountService; @Inject - public AccountChildrenFinderImpl(AccountFactory accountFactory, AccountService accountService) { + public AccountRelativeFinderImpl(AccountFactory accountFactory, AccountService accountService) { this.accountFactory = accountFactory; this.accountService = accountService; } @@ -53,4 +60,29 @@ public AccountListResult findChildren(KapuaId scopeId, Optional<KapuaId> exclude return KapuaSecurityUtils.doPrivileged(() -> accountService.query(childAccountsQuery)); } + + @Override + public List<KapuaId> findParentIds(KapuaId accountId) throws KapuaException { + Account account = KapuaSecurityUtils.doPrivileged(() -> accountService.find(accountId)); + + if(account == null || account.getParentAccountPath() == null) { + return Collections.emptyList(); + } + + ArrayList<KapuaId> parentAccountIds = new ArrayList<KapuaId>(); + + String[] splitIds = account.getParentAccountPath().split("/"); + String accountIdStr = accountId.getId().toString(); + + // Iterate in reverse order to get parent first, then grandparent, etc + for(int i = splitIds.length - 1; i >= 0; i--) { + String id = splitIds[i]; + + if(id != null && !id.isEmpty() && !id.equals(accountIdStr)) { + parentAccountIds.add(new KapuaEid(new BigInteger(id))); + } + } + + return parentAccountIds; + } } \ No newline at end of file diff --git a/service/account/test/src/test/java/org/eclipse/kapua/service/account/test/AccountLocatorConfiguration.java b/service/account/test/src/test/java/org/eclipse/kapua/service/account/test/AccountLocatorConfiguration.java index 7f244466360..7353db3ce3b 100644 --- a/service/account/test/src/test/java/org/eclipse/kapua/service/account/test/AccountLocatorConfiguration.java +++ b/service/account/test/src/test/java/org/eclipse/kapua/service/account/test/AccountLocatorConfiguration.java @@ -20,7 +20,7 @@ import com.google.inject.name.Names; import io.cucumber.java.Before; import org.eclipse.kapua.KapuaException; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.ResourceLimitedServiceConfigurationManagerImpl; import org.eclipse.kapua.commons.configuration.RootUserTester; import org.eclipse.kapua.commons.configuration.ServiceConfigImplJpaRepository; @@ -109,7 +109,7 @@ protected void configure() { // bind(AccountEntityManagerFactory.class).toInstance(entityManagerFactory); final AccountFactory accountFactory = new AccountFactoryImpl(); bind(AccountFactory.class).toInstance(accountFactory); - bind(AccountChildrenFinder.class).toInstance(Mockito.mock(AccountChildrenFinder.class)); + bind(AccountRelativeFinder.class).toInstance(Mockito.mock(AccountRelativeFinder.class)); final KapuaJpaRepositoryConfiguration jpaRepoConfig = new KapuaJpaRepositoryConfiguration(); final AccountRepository accountRepository = new AccountImplJpaRepository(jpaRepoConfig); bind(AccountService.class).toInstance(new AccountServiceImpl( @@ -121,7 +121,7 @@ protected void configure() { AccountService.class.getName(), new ServiceConfigImplJpaRepository(jpaRepoConfig), Mockito.mock(RootUserTester.class), - Mockito.mock(AccountChildrenFinder.class), + Mockito.mock(AccountRelativeFinder.class), new UsedEntitiesCounterImpl( accountFactory, accountRepository) diff --git a/service/api/src/main/java/org/eclipse/kapua/model/KapuaForwardableEntity.java b/service/api/src/main/java/org/eclipse/kapua/model/KapuaForwardableEntity.java new file mode 100644 index 00000000000..693e3be1200 --- /dev/null +++ b/service/api/src/main/java/org/eclipse/kapua/model/KapuaForwardableEntity.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.model; + +import javax.xml.bind.annotation.XmlElement; + +/** + * {@link KapuaForwardableEntity} definition. + * + * @since 2.0.0 + */ +public interface KapuaForwardableEntity extends KapuaNamedEntity { + + @XmlElement(name = "forwardable") + Boolean getForwardable(); + + void setForwardable(Boolean forwardable); +} \ No newline at end of file diff --git a/service/api/src/main/java/org/eclipse/kapua/model/KapuaForwardableEntityAttributes.java b/service/api/src/main/java/org/eclipse/kapua/model/KapuaForwardableEntityAttributes.java new file mode 100644 index 00000000000..46ac0260671 --- /dev/null +++ b/service/api/src/main/java/org/eclipse/kapua/model/KapuaForwardableEntityAttributes.java @@ -0,0 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.model; + +/** + * {@link KapuaForwardableEntityAttributes} attributes. + * + * @see org.eclipse.kapua.model.KapuaEntityAttributes + * @since 2.0.0 + */ +public class KapuaForwardableEntityAttributes extends KapuaNamedEntityAttributes { + + public static final String FORWARDABLE = "forwardable"; +} diff --git a/service/api/src/main/java/org/eclipse/kapua/model/query/KapuaForwardableEntityQuery.java b/service/api/src/main/java/org/eclipse/kapua/model/query/KapuaForwardableEntityQuery.java new file mode 100644 index 00000000000..7208cacb780 --- /dev/null +++ b/service/api/src/main/java/org/eclipse/kapua/model/query/KapuaForwardableEntityQuery.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.model.query; + +import javax.xml.bind.annotation.XmlElement; + +public interface KapuaForwardableEntityQuery extends KapuaQuery { + /** + * Gets whether to query for inherited entities + * + * @return {@code true} if set to query for inherited entities, {@code false} otherwise. + * @since 2.0.0 + */ + @XmlElement(name = "includeInherited") + Boolean getIncludeInherited(); + + /** + * Sets whether to query for inherited entities + * + * @param includeInherited {@code true} to query for inherited entities, {@code false} otherwise. + * @since 2.0.0 + */ + void setIncludeInherited(Boolean includeInherited); + +} diff --git a/service/commons/pom.xml b/service/commons/pom.xml index ce49e66c6f3..ad240da38e3 100644 --- a/service/commons/pom.xml +++ b/service/commons/pom.xml @@ -28,5 +28,6 @@ <modules> <module>elasticsearch</module> <module>storable</module> + <module>utils</module> </modules> </project> diff --git a/service/commons/utils/api/pom.xml b/service/commons/utils/api/pom.xml new file mode 100644 index 00000000000..f2431fa01d5 --- /dev/null +++ b/service/commons/utils/api/pom.xml @@ -0,0 +1,35 @@ +<?xml version="1.0"?> +<!-- + Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + + This program and the accompanying materials are made + available under the terms of the Eclipse Public License 2.0 + which is available at https://www.eclipse.org/legal/epl-2.0/ + + SPDX-License-Identifier: EPL-2.0 + + Contributors: + Eurotech - initial API and implementation + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <artifactId>kapua-service-commons-utils</artifactId> + <groupId>org.eclipse.kapua</groupId> + <version>2.0.0-SNAPSHOT</version> + </parent> + + <artifactId>kapua-service-commons-utils-api</artifactId> + + <dependencies> + <!-- Internal Dependencies--> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-commons</artifactId> + </dependency> + </dependencies> + +</project> diff --git a/service/commons/utils/api/src/main/java/org/eclipse/kapua/service/utils/KapuaEntityQueryUtil.java b/service/commons/utils/api/src/main/java/org/eclipse/kapua/service/utils/KapuaEntityQueryUtil.java new file mode 100644 index 00000000000..1dcc441eee7 --- /dev/null +++ b/service/commons/utils/api/src/main/java/org/eclipse/kapua/service/utils/KapuaEntityQueryUtil.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.service.utils; + +import javax.validation.constraints.NotNull; + +import org.eclipse.kapua.KapuaException; +import org.eclipse.kapua.model.query.KapuaForwardableEntityQuery; +import org.eclipse.kapua.model.query.KapuaQuery; +import org.eclipse.kapua.service.KapuaService; + +/** + * Service to help process/transform queries + * + * @since 2.0.0 + */ +public interface KapuaEntityQueryUtil extends KapuaService { + + /** + * Transform the specified query for the {@link KapuaForwardableEntityQuery} getIncludeInherited() option (i.e. + * to also query the parent accounts). + * + * @param query + * @return + * @throws KapuaException + */ + public KapuaQuery transformInheritedQuery(@NotNull KapuaForwardableEntityQuery query) throws KapuaException; +} diff --git a/service/commons/utils/api/src/main/java/org/eclipse/kapua/service/utils/KapuaForwardableEntityRepository.java b/service/commons/utils/api/src/main/java/org/eclipse/kapua/service/utils/KapuaForwardableEntityRepository.java new file mode 100644 index 00000000000..c13e7b097f0 --- /dev/null +++ b/service/commons/utils/api/src/main/java/org/eclipse/kapua/service/utils/KapuaForwardableEntityRepository.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2016, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.service.utils; + +import org.eclipse.kapua.KapuaException; +import org.eclipse.kapua.model.KapuaEntity; +import org.eclipse.kapua.model.KapuaForwardableEntity; +import org.eclipse.kapua.model.KapuaNamedEntity; +import org.eclipse.kapua.model.query.KapuaForwardableEntityQuery; +import org.eclipse.kapua.model.query.KapuaListResult; +import org.eclipse.kapua.storage.KapuaEntityRepository; +import org.eclipse.kapua.storage.KapuaNamedEntityRepository; +import org.eclipse.kapua.storage.KapuaUpdatableEntityRepository; +import org.eclipse.kapua.storage.TxContext; + +/** + * This contract builds upon {@link KapuaUpdatableEntityRepository} (and in turn {@link KapuaEntityRepository}, + * adding functionalities specific to Kapua Entities that are implement the contract {@link KapuaNamedEntity} (as in: have a name and description fields) + * + * @param <E> The specific subclass of {@link KapuaEntity} handled by this repository + * @param <L> The specific subclass of {@link KapuaListResult}<E> meant to hold list results for the kapua entity handled by this repo + * @since 2.0.0 + */ +public interface KapuaForwardableEntityRepository<E extends KapuaForwardableEntity, L extends KapuaListResult<E>> + extends KapuaNamedEntityRepository<E, L> { + L query(TxContext txContext, KapuaForwardableEntityQuery kapuaQuery) throws KapuaException; + + long count(TxContext txContext, KapuaForwardableEntityQuery kapuaQuery) throws KapuaException; + +} diff --git a/service/commons/utils/internal/pom.xml b/service/commons/utils/internal/pom.xml new file mode 100644 index 00000000000..6f85ee08f14 --- /dev/null +++ b/service/commons/utils/internal/pom.xml @@ -0,0 +1,41 @@ +<?xml version="1.0"?> +<!-- + Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + + This program and the accompanying materials are made + available under the terms of the Eclipse Public License 2.0 + which is available at https://www.eclipse.org/legal/epl-2.0/ + + SPDX-License-Identifier: EPL-2.0 + + Contributors: + Eurotech - initial API and implementation + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <artifactId>kapua-service-commons-utils</artifactId> + <groupId>org.eclipse.kapua</groupId> + <version>2.0.0-SNAPSHOT</version> + </parent> + + <artifactId>kapua-service-commons-utils-internal</artifactId> + + <dependencies> + <!-- Implemented Interface--> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-service-commons-utils-api</artifactId> + </dependency> + + <!-- Internal Dependencies--> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-commons</artifactId> + </dependency> + </dependencies> + +</project> diff --git a/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaEntityQueryUtilImpl.java b/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaEntityQueryUtilImpl.java new file mode 100644 index 00000000000..7c0125e7914 --- /dev/null +++ b/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaEntityQueryUtilImpl.java @@ -0,0 +1,76 @@ +/******************************************************************************* + * Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.service.utils.internal; + +import org.eclipse.kapua.KapuaException; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; +import org.eclipse.kapua.model.KapuaEntityAttributes; +import org.eclipse.kapua.model.KapuaForwardableEntityAttributes; +import org.eclipse.kapua.model.id.KapuaId; +import org.eclipse.kapua.model.query.KapuaForwardableEntityQuery; +import org.eclipse.kapua.model.query.KapuaQuery; +import org.eclipse.kapua.model.query.predicate.AndPredicate; +import org.eclipse.kapua.model.query.predicate.OrPredicate; +import org.eclipse.kapua.service.utils.KapuaEntityQueryUtil; + +import javax.inject.Inject; +import javax.validation.constraints.NotNull; + +/** + * Implementation of converter between {@link KapuaForwardableEntityQuery} and {@link KapuaQuery} + * + * @since 2.0.0 + */ +public class KapuaEntityQueryUtilImpl implements KapuaEntityQueryUtil { + + private final AccountRelativeFinder accountRelativeFinder; + + @Inject + public KapuaEntityQueryUtilImpl(AccountRelativeFinder accountRelativeFinder) { + this.accountRelativeFinder = accountRelativeFinder; + } + + @Override + public KapuaQuery transformInheritedQuery(@NotNull KapuaForwardableEntityQuery query) throws KapuaException { + // Transform only if this option is enabled + if (!query.getIncludeInherited()) { + return query; + } + + KapuaId scopeId = query.getScopeId(); + + // Replacement predicate root + AndPredicate newPred = query.andPredicate(query.getPredicate()); + + // Create predicate to query ancestor accounts for entities that are forwardable + query.setScopeId(KapuaId.ANY); + OrPredicate forwardableAncestorPreds = query.orPredicate(); + + for (KapuaId id : accountRelativeFinder.findParentIds(scopeId)) { + AndPredicate scopedForwardablePred = query.andPredicate(query.attributePredicate(KapuaEntityAttributes.SCOPE_ID, id)); + scopedForwardablePred = scopedForwardablePred.and(query.attributePredicate(KapuaForwardableEntityAttributes.FORWARDABLE, true)); + + forwardableAncestorPreds = forwardableAncestorPreds.or(scopedForwardablePred); + } + // include the original scope (which doesn't need to be forwardable) + forwardableAncestorPreds = forwardableAncestorPreds.or(query.attributePredicate(KapuaEntityAttributes.SCOPE_ID, scopeId)); + + // Use the original query predicate AND the forwardable parent scopes + query.setPredicate(newPred.and(forwardableAncestorPreds)); + + // Disable this option so that it does not get transformed again in case of subsequent calls to this function + query.setIncludeInherited(false); + + return query; + } +} diff --git a/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaForwardableEntityJpaRepository.java b/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaForwardableEntityJpaRepository.java new file mode 100644 index 00000000000..fbcf093960b --- /dev/null +++ b/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaForwardableEntityJpaRepository.java @@ -0,0 +1,76 @@ +/******************************************************************************* + * Copyright (c) 2016, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.service.utils.internal; + +import org.eclipse.kapua.KapuaException; +import org.eclipse.kapua.commons.jpa.KapuaJpaRepositoryConfiguration; +import org.eclipse.kapua.commons.jpa.KapuaNamedEntityJpaRepository; +import org.eclipse.kapua.model.KapuaForwardableEntity; +import org.eclipse.kapua.model.query.KapuaForwardableEntityQuery; +import org.eclipse.kapua.model.query.KapuaListResult; +import org.eclipse.kapua.model.query.KapuaQuery; +import org.eclipse.kapua.service.utils.KapuaEntityQueryUtil; +import org.eclipse.kapua.service.utils.KapuaForwardableEntityRepository; +import org.eclipse.kapua.storage.TxContext; + +import java.util.function.Supplier; + +public class KapuaForwardableEntityJpaRepository<E extends KapuaForwardableEntity, C extends E, L extends KapuaListResult<E>> + extends KapuaNamedEntityJpaRepository<E, C, L> + implements KapuaForwardableEntityRepository<E, L> { + private final KapuaEntityQueryUtil kapuaEntityQueryUtil; + + public KapuaForwardableEntityJpaRepository( + Class<C> concreteClass, + String entityName, + Supplier<L> listSupplier, + KapuaJpaRepositoryConfiguration jpaRepoConfig, + KapuaEntityQueryUtil kapuaEntityQueryUtil) { + super(concreteClass, entityName, listSupplier, jpaRepoConfig); + this.kapuaEntityQueryUtil = kapuaEntityQueryUtil; + } + + @Override + public L query(TxContext txContext, KapuaForwardableEntityQuery kapuaQuery) throws KapuaException { + return doQuery(txContext, kapuaQuery); + } + + @Override + public L query(TxContext txContext, KapuaQuery listQuery) throws KapuaException { + // Transform the query for the includeInherited option + return (listQuery instanceof KapuaForwardableEntityQuery) + ? this.doQuery(txContext, (KapuaForwardableEntityQuery) listQuery) : super.query(txContext, listQuery); + } + + private L doQuery(TxContext txContext, KapuaForwardableEntityQuery kapuaQuery) throws KapuaException { + final KapuaQuery query = kapuaEntityQueryUtil.transformInheritedQuery(kapuaQuery); + return super.query(txContext, query); + } + + @Override + public long count(TxContext txContext, KapuaForwardableEntityQuery kapuaQuery) throws KapuaException { + return doCount(txContext, kapuaQuery); + } + + @Override + public long count(TxContext txContext, KapuaQuery countQuery) throws KapuaException { + // Transform the query for the includeInherited option + return (countQuery instanceof KapuaForwardableEntityQuery) + ? this.count(txContext, (KapuaForwardableEntityQuery) countQuery) : super.count(txContext, countQuery); + } + + private long doCount(TxContext txContext, KapuaForwardableEntityQuery kapuaQuery) throws KapuaException { + final KapuaQuery query = kapuaEntityQueryUtil.transformInheritedQuery(kapuaQuery); + return super.count(txContext, query); + } +} diff --git a/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaServiceUtilsModule.java b/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaServiceUtilsModule.java new file mode 100644 index 00000000000..ff695eb83c1 --- /dev/null +++ b/service/commons/utils/internal/src/main/java/org/eclipse/kapua/service/utils/internal/KapuaServiceUtilsModule.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Eurotech - initial API and implementation + *******************************************************************************/ +package org.eclipse.kapua.service.utils.internal; + +import org.eclipse.kapua.commons.core.AbstractKapuaModule; +import org.eclipse.kapua.service.utils.KapuaEntityQueryUtil; + +import javax.inject.Singleton; + +public class KapuaServiceUtilsModule extends AbstractKapuaModule { + + @Override + protected void configureModule() { + bind(KapuaEntityQueryUtil.class).to(KapuaEntityQueryUtilImpl.class).in(Singleton.class); + // nothing to do here + } +} diff --git a/service/commons/utils/pom.xml b/service/commons/utils/pom.xml new file mode 100644 index 00000000000..00eeeaf9db8 --- /dev/null +++ b/service/commons/utils/pom.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<!-- + Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others + + This program and the accompanying materials are made + available under the terms of the Eclipse Public License 2.0 + which is available at https://www.eclipse.org/legal/epl-2.0/ + + SPDX-License-Identifier: EPL-2.0 + + Contributors: + Eurotech - initial API and implementation + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <artifactId>kapua-service-commons</artifactId> + <groupId>org.eclipse.kapua</groupId> + <version>2.0.0-SNAPSHOT</version> + </parent> + + <artifactId>kapua-service-commons-utils</artifactId> + <packaging>pom</packaging> + + <modules> + <module>api</module> + <module>internal</module> + </modules> + +</project> 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 1ebbb662492..1f01bdef9ce 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 @@ -14,7 +14,7 @@ import com.google.inject.Provides; import com.google.inject.multibindings.ProvidesIntoSet; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.CachingServiceConfigRepository; import org.eclipse.kapua.commons.configuration.ResourceLimitedServiceConfigurationManagerImpl; import org.eclipse.kapua.commons.configuration.RootUserTester; @@ -226,7 +226,7 @@ protected TxManager deviceRegistryTxManager(KapuaJpaTxManagerFactory jpaTxManage protected ServiceConfigurationManager deviceRegistryServiceConfigurationManager( DeviceFactory factory, RootUserTester rootUserTester, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, DeviceRepository deviceRepository, KapuaJpaRepositoryConfiguration jpaRepoConfig, EntityCacheFactory entityCacheFactory @@ -239,7 +239,7 @@ protected ServiceConfigurationManager deviceRegistryServiceConfigurationManager( entityCacheFactory.createCache("AbstractKapuaConfigurableServiceCacheId") ), rootUserTester, - accountChildrenFinder, + accountRelativeFinder, new UsedEntitiesCounterImpl( factory, deviceRepository) 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 3d820c8f7be..8064339b11b 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 @@ -20,7 +20,7 @@ import com.google.inject.name.Names; import io.cucumber.java.Before; import org.eclipse.kapua.KapuaException; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.RootUserTester; import org.eclipse.kapua.commons.configuration.ServiceConfigurationManager; import org.eclipse.kapua.commons.configuration.metatype.KapuaMetatypeFactoryImpl; @@ -128,7 +128,7 @@ protected void configure() { bind(AuthorizationService.class).toInstance(mockedAuthorization); bind(CredentialsFactory.class).toInstance(credentialsFactory); bind(KapuaJpaRepositoryConfiguration.class).toInstance(new KapuaJpaRepositoryConfiguration()); - bind(AccountChildrenFinder.class).toInstance(Mockito.mock(AccountChildrenFinder.class)); + bind(AccountRelativeFinder.class).toInstance(Mockito.mock(AccountRelativeFinder.class)); bind(AccountFactory.class).toInstance(Mockito.mock(AccountFactory.class)); bind(AccountService.class).toInstance(Mockito.mock(AccountService.class)); diff --git a/service/job/internal/src/main/java/org/eclipse/kapua/service/job/internal/JobModule.java b/service/job/internal/src/main/java/org/eclipse/kapua/service/job/internal/JobModule.java index 6724cb59a1d..8ea7c28fa8f 100644 --- a/service/job/internal/src/main/java/org/eclipse/kapua/service/job/internal/JobModule.java +++ b/service/job/internal/src/main/java/org/eclipse/kapua/service/job/internal/JobModule.java @@ -14,7 +14,7 @@ import com.google.inject.Provides; import com.google.inject.multibindings.ProvidesIntoSet; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.CachingServiceConfigRepository; import org.eclipse.kapua.commons.configuration.ResourceLimitedServiceConfigurationManagerImpl; import org.eclipse.kapua.commons.configuration.RootUserTester; @@ -80,7 +80,7 @@ JobService jobService( public ServiceConfigurationManager jobServiceConfigurationManager( JobFactory factory, RootUserTester rootUserTester, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, JobRepository jobRepository, KapuaJpaRepositoryConfiguration jpaRepoConfig, EntityCacheFactory entityCacheFactory @@ -93,7 +93,7 @@ public ServiceConfigurationManager jobServiceConfigurationManager( entityCacheFactory.createCache("AbstractKapuaConfigurableServiceCacheId") ), rootUserTester, - accountChildrenFinder, + accountRelativeFinder, new UsedEntitiesCounterImpl( factory, jobRepository diff --git a/service/job/test/src/test/java/org/eclipse/kapua/service/job/test/JobLocatorConfiguration.java b/service/job/test/src/test/java/org/eclipse/kapua/service/job/test/JobLocatorConfiguration.java index 95e5d97240c..651c2c92520 100644 --- a/service/job/test/src/test/java/org/eclipse/kapua/service/job/test/JobLocatorConfiguration.java +++ b/service/job/test/src/test/java/org/eclipse/kapua/service/job/test/JobLocatorConfiguration.java @@ -19,7 +19,7 @@ import com.google.inject.Singleton; import com.google.inject.name.Names; import io.cucumber.java.Before; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.RootUserTester; import org.eclipse.kapua.commons.configuration.ServiceConfigurationManager; import org.eclipse.kapua.commons.configuration.metatype.KapuaMetatypeFactoryImpl; @@ -121,7 +121,7 @@ protected void configure() { bind(QueryFactory.class).toInstance(new QueryFactoryImpl()); // Account - bind(AccountChildrenFinder.class).toInstance(Mockito.mock(AccountChildrenFinder.class)); + bind(AccountRelativeFinder.class).toInstance(Mockito.mock(AccountRelativeFinder.class)); bind(AccountService.class).toInstance(Mockito.mock(AccountService.class)); bind(AccountFactory.class).toInstance(Mockito.spy(new AccountFactoryImpl())); bind(KapuaJpaRepositoryConfiguration.class).toInstance(new KapuaJpaRepositoryConfiguration()); diff --git a/service/scheduler/test/src/test/java/org/eclipse/kapua/service/scheduler/test/SchedulerLocatorConfiguration.java b/service/scheduler/test/src/test/java/org/eclipse/kapua/service/scheduler/test/SchedulerLocatorConfiguration.java index 45a7cc44273..7d753810f64 100644 --- a/service/scheduler/test/src/test/java/org/eclipse/kapua/service/scheduler/test/SchedulerLocatorConfiguration.java +++ b/service/scheduler/test/src/test/java/org/eclipse/kapua/service/scheduler/test/SchedulerLocatorConfiguration.java @@ -20,7 +20,7 @@ import com.google.inject.name.Names; import io.cucumber.java.Before; import org.eclipse.kapua.KapuaException; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.RootUserTester; import org.eclipse.kapua.commons.configuration.ServiceConfigurationManager; import org.eclipse.kapua.commons.configuration.metatype.KapuaMetatypeFactoryImpl; @@ -110,7 +110,7 @@ protected void configure() { bind(KapuaMetatypeFactory.class).toInstance(new KapuaMetatypeFactoryImpl()); // binding Account related services - bind(AccountChildrenFinder.class).toInstance(Mockito.mock(AccountChildrenFinder.class)); + bind(AccountRelativeFinder.class).toInstance(Mockito.mock(AccountRelativeFinder.class)); bind(AccountService.class).toInstance(Mockito.mock(AccountService.class)); bind(AccountFactory.class).toInstance(Mockito.spy(new AccountFactoryImpl())); bind(RootUserTester.class).toInstance(Mockito.mock(RootUserTester.class)); diff --git a/service/security/certificate/api/pom.xml b/service/security/certificate/api/pom.xml index 4e7b1f349c1..86acf1a5507 100644 --- a/service/security/certificate/api/pom.xml +++ b/service/security/certificate/api/pom.xml @@ -36,6 +36,10 @@ <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-service-commons-utils-api</artifactId> + </dependency> </dependencies> diff --git a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateQuery.java b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateQuery.java index 75a32582951..bce32852b6c 100644 --- a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateQuery.java +++ b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateQuery.java @@ -12,8 +12,8 @@ *******************************************************************************/ package org.eclipse.kapua.service.certificate; +import org.eclipse.kapua.model.query.KapuaForwardableEntityQuery; import org.eclipse.kapua.model.query.KapuaQuery; -import org.eclipse.kapua.service.certificate.info.CertificateInfo; import org.eclipse.kapua.service.certificate.xml.CertificateXmlRegistry; import javax.xml.bind.annotation.XmlAccessType; @@ -31,8 +31,9 @@ @XmlRootElement(name = "query") @XmlAccessorType(XmlAccessType.PROPERTY) @XmlType(factoryClass = CertificateXmlRegistry.class, factoryMethod = "newQuery") -public interface CertificateQuery extends KapuaQuery { +public interface CertificateQuery extends KapuaForwardableEntityQuery { + @Override /** * Gets whether or not to get also inherited {@link CertificateInfo}s * @@ -42,6 +43,7 @@ public interface CertificateQuery extends KapuaQuery { @XmlElement(name = "includeInherited") Boolean getIncludeInherited(); + @Override /** * Sets whether or not to get also inherited {@link CertificateInfo}s * diff --git a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateRepository.java b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateRepository.java index a207fe2d3ca..84e6fbdc7e5 100644 --- a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateRepository.java +++ b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateRepository.java @@ -12,8 +12,8 @@ *******************************************************************************/ package org.eclipse.kapua.service.certificate; -import org.eclipse.kapua.storage.KapuaNamedEntityRepository; +import org.eclipse.kapua.service.utils.KapuaForwardableEntityRepository; public interface CertificateRepository - extends KapuaNamedEntityRepository<Certificate, CertificateListResult> { + extends KapuaForwardableEntityRepository<Certificate, CertificateListResult> { } diff --git a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateService.java b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateService.java index e7fb31376c0..5a3f60338b0 100644 --- a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateService.java +++ b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/CertificateService.java @@ -35,5 +35,13 @@ public interface CertificateService extends KapuaEntityService<Certificate, Cert Certificate generate(CertificateGenerator generator) throws KapuaException; + /** + * @param scopeId + * @param usage + * @return + * @throws KapuaException + * @deprecated Since 2.0.0 Use the query method with CertificateQuery.setIncludeInherited(true) instead + */ + @Deprecated List<Certificate> findAncestorsCertificates(KapuaId scopeId, CertificateUsage usage) throws KapuaException; } diff --git a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfo.java b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfo.java index 5209aa5505a..fa38f37a669 100644 --- a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfo.java +++ b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfo.java @@ -12,15 +12,8 @@ *******************************************************************************/ package org.eclipse.kapua.service.certificate.info; -import org.eclipse.kapua.model.KapuaNamedEntity; -import org.eclipse.kapua.model.id.KapuaId; -import org.eclipse.kapua.model.id.KapuaIdAdapter; -import org.eclipse.kapua.model.xml.BinaryXmlAdapter; -import org.eclipse.kapua.model.xml.DateXmlAdapter; -import org.eclipse.kapua.service.certificate.CertificateStatus; -import org.eclipse.kapua.service.certificate.CertificateUsage; -import org.eclipse.kapua.service.certificate.KeyUsageSetting; -import org.eclipse.kapua.service.certificate.info.xml.CertificateInfoXmlRegistry; +import java.util.Date; +import java.util.Set; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -29,8 +22,16 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import java.util.Date; -import java.util.Set; + +import org.eclipse.kapua.model.KapuaForwardableEntity; +import org.eclipse.kapua.model.id.KapuaId; +import org.eclipse.kapua.model.id.KapuaIdAdapter; +import org.eclipse.kapua.model.xml.BinaryXmlAdapter; +import org.eclipse.kapua.model.xml.DateXmlAdapter; +import org.eclipse.kapua.service.certificate.CertificateStatus; +import org.eclipse.kapua.service.certificate.CertificateUsage; +import org.eclipse.kapua.service.certificate.KeyUsageSetting; +import org.eclipse.kapua.service.certificate.info.xml.CertificateInfoXmlRegistry; /** * @since 1.1.0 @@ -38,7 +39,7 @@ @XmlRootElement(name = "certificateInfo") @XmlAccessorType(XmlAccessType.PROPERTY) @XmlType(factoryClass = CertificateInfoXmlRegistry.class, factoryMethod = "newCertificateInfo") -public interface CertificateInfo extends KapuaNamedEntity { +public interface CertificateInfo extends KapuaForwardableEntity { String TYPE = "CertificateInfo"; @@ -139,9 +140,4 @@ default String getType() { void addCertificateUsage(CertificateUsage certificateUsage); void removeCertificateUsage(CertificateUsage certificateUsage); - - @XmlElement(name = "forwardable") - Boolean getForwardable(); - - void setForwardable(Boolean forwardable); } diff --git a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoQuery.java b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoQuery.java index c9f7cad5225..e8fc64aca09 100644 --- a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoQuery.java +++ b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoQuery.java @@ -12,6 +12,7 @@ *******************************************************************************/ package org.eclipse.kapua.service.certificate.info; +import org.eclipse.kapua.model.query.KapuaForwardableEntityQuery; import org.eclipse.kapua.model.query.KapuaQuery; import org.eclipse.kapua.service.certificate.info.xml.CertificateInfoXmlRegistry; @@ -30,8 +31,9 @@ @XmlRootElement(name = "query") @XmlAccessorType(XmlAccessType.PROPERTY) @XmlType(factoryClass = CertificateInfoXmlRegistry.class, factoryMethod = "newQuery") -public interface CertificateInfoQuery extends KapuaQuery { +public interface CertificateInfoQuery extends KapuaForwardableEntityQuery { + @Override /** * Gets whether or not to get also inherited {@link CertificateInfo}s * @@ -41,6 +43,7 @@ public interface CertificateInfoQuery extends KapuaQuery { @XmlElement(name = "includeInherited") Boolean getIncludeInherited(); + @Override /** * Sets whether or not to get also inherited {@link CertificateInfo}s * diff --git a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoRepository.java b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoRepository.java index c2607e5a1e8..7d6f6f445f7 100644 --- a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoRepository.java +++ b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoRepository.java @@ -12,8 +12,8 @@ *******************************************************************************/ package org.eclipse.kapua.service.certificate.info; -import org.eclipse.kapua.storage.KapuaNamedEntityRepository; +import org.eclipse.kapua.service.utils.KapuaForwardableEntityRepository; public interface CertificateInfoRepository - extends KapuaNamedEntityRepository<CertificateInfo, CertificateInfoListResult> { + extends KapuaForwardableEntityRepository<CertificateInfo, CertificateInfoListResult> { } diff --git a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoService.java b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoService.java index b7067df6eb6..b29aa22bb84 100644 --- a/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoService.java +++ b/service/security/certificate/api/src/main/java/org/eclipse/kapua/service/certificate/info/CertificateInfoService.java @@ -36,6 +36,8 @@ public interface CertificateInfoService extends KapuaEntityService<CertificateIn * @return * @throws KapuaException * @since 1.1.0 + * @deprecated Since 2.0.0 Use the query method with CertificateQuery.setIncludeInherited(true) instead */ + @Deprecated List<CertificateInfo> findAncestorsCertificates(KapuaId scopeId, CertificateUsage usage) throws KapuaException; } diff --git a/service/security/certificate/internal/pom.xml b/service/security/certificate/internal/pom.xml index 1416bbaf5cd..15bf91914ea 100644 --- a/service/security/certificate/internal/pom.xml +++ b/service/security/certificate/internal/pom.xml @@ -33,5 +33,13 @@ <groupId>org.eclipse.kapua</groupId> <artifactId>kapua-commons</artifactId> </dependency> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-service-commons-utils-api</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.kapua</groupId> + <artifactId>kapua-service-commons-utils-internal</artifactId> + </dependency> </dependencies> </project> diff --git a/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/info/internal/CertificateInfoModule.java b/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/info/internal/CertificateInfoModule.java index 6a8b3b5f8bd..7cc9a29e225 100644 --- a/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/info/internal/CertificateInfoModule.java +++ b/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/info/internal/CertificateInfoModule.java @@ -12,14 +12,28 @@ *******************************************************************************/ package org.eclipse.kapua.service.certificate.info.internal; +import com.google.inject.Provides; import org.eclipse.kapua.commons.core.AbstractKapuaModule; +import org.eclipse.kapua.service.certificate.CertificateService; import org.eclipse.kapua.service.certificate.info.CertificateInfoFactory; import org.eclipse.kapua.service.certificate.info.CertificateInfoService; +import javax.inject.Singleton; + public class CertificateInfoModule extends AbstractKapuaModule { @Override protected void configureModule() { bind(CertificateInfoFactory.class).to(CertificateInfoFactoryImpl.class); - bind(CertificateInfoService.class).to(CertificateInfoServiceImpl.class); + } + + + @Provides + @Singleton + CertificateInfoService certificateInfoService( + CertificateService certificateService) { + + return new CertificateInfoServiceImpl( + certificateService + ); } } diff --git a/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/info/internal/CertificateInfoServiceImpl.java b/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/info/internal/CertificateInfoServiceImpl.java index 0980122ac7c..1d99a7c42d1 100644 --- a/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/info/internal/CertificateInfoServiceImpl.java +++ b/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/info/internal/CertificateInfoServiceImpl.java @@ -55,7 +55,6 @@ public CertificateInfoListResult query(KapuaQuery query) throws KapuaException { ArgumentValidator.notNull(query, "query"); CertificateQuery certificateQuery = new CertificateQueryImpl(query); - certificateQuery.setIncludeInherited(((CertificateInfoQuery) query).getIncludeInherited()); CertificateInfoListResult publicCertificates = new CertificateInfoListResultImpl(); publicCertificates.addItem(certificateService.query(certificateQuery).getFirstItem()); diff --git a/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/internal/CertificateQueryImpl.java b/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/internal/CertificateQueryImpl.java index bfa22b312e7..5a7fc108e9a 100644 --- a/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/internal/CertificateQueryImpl.java +++ b/service/security/certificate/internal/src/main/java/org/eclipse/kapua/service/certificate/internal/CertificateQueryImpl.java @@ -12,7 +12,7 @@ *******************************************************************************/ package org.eclipse.kapua.service.certificate.internal; -import org.eclipse.kapua.commons.model.query.AbstractKapuaNamedQuery; +import org.eclipse.kapua.commons.model.query.AbstractKapuaForwardableEntityQuery; import org.eclipse.kapua.model.id.KapuaId; import org.eclipse.kapua.model.query.KapuaQuery; import org.eclipse.kapua.service.certificate.CertificateQuery; @@ -22,9 +22,7 @@ * * @since 1.0.0 */ -public class CertificateQueryImpl extends AbstractKapuaNamedQuery implements CertificateQuery { - - private Boolean includeInherited = Boolean.FALSE; +public class CertificateQueryImpl extends AbstractKapuaForwardableEntityQuery implements CertificateQuery { /** * Constructor. @@ -55,14 +53,4 @@ public CertificateQueryImpl(KapuaId scopeId) { public CertificateQueryImpl(KapuaQuery query) { super(query); } - - @Override - public Boolean getIncludeInherited() { - return includeInherited; - } - - @Override - public void setIncludeInherited(Boolean includeInherited) { - this.includeInherited = includeInherited; - } } diff --git a/service/security/shiro/src/main/java/org/eclipse/kapua/service/authorization/shiro/AuthorizationModule.java b/service/security/shiro/src/main/java/org/eclipse/kapua/service/authorization/shiro/AuthorizationModule.java index 86b1ac1196f..ea15523375f 100644 --- a/service/security/shiro/src/main/java/org/eclipse/kapua/service/authorization/shiro/AuthorizationModule.java +++ b/service/security/shiro/src/main/java/org/eclipse/kapua/service/authorization/shiro/AuthorizationModule.java @@ -14,7 +14,7 @@ import com.google.inject.Provides; import com.google.inject.multibindings.ProvidesIntoSet; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.CachingServiceConfigRepository; import org.eclipse.kapua.commons.configuration.ResourceLimitedServiceConfigurationManagerImpl; import org.eclipse.kapua.commons.configuration.RootUserTester; @@ -264,7 +264,7 @@ RoleService roleService(PermissionFactory permissionFactory, public ServiceConfigurationManager roleServiceConfigurationManager( RoleFactory roleFactory, RootUserTester rootUserTester, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, RoleRepository roleRepository, KapuaJpaRepositoryConfiguration jpaRepoConfig, EntityCacheFactory entityCacheFactory @@ -277,7 +277,7 @@ public ServiceConfigurationManager roleServiceConfigurationManager( entityCacheFactory.createCache("AbstractKapuaConfigurableServiceCacheId") ), rootUserTester, - accountChildrenFinder, + accountRelativeFinder, new UsedEntitiesCounterImpl( roleFactory, roleRepository @@ -317,7 +317,7 @@ GroupService groupService(PermissionFactory permissionFactory, public ServiceConfigurationManager groupServiceConfigurationManager( GroupFactory factory, RootUserTester rootUserTester, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, GroupRepository groupRepository, KapuaJpaRepositoryConfiguration jpaRepoConfig, EntityCacheFactory entityCacheFactory @@ -330,7 +330,7 @@ public ServiceConfigurationManager groupServiceConfigurationManager( entityCacheFactory.createCache("AbstractKapuaConfigurableServiceCacheId") ), rootUserTester, - accountChildrenFinder, + accountRelativeFinder, new UsedEntitiesCounterImpl( factory, groupRepository diff --git a/service/security/test/src/test/java/org/eclipse/kapua/service/security/test/SecurityLocatorConfiguration.java b/service/security/test/src/test/java/org/eclipse/kapua/service/security/test/SecurityLocatorConfiguration.java index c5ec5887526..e040a2b61ff 100644 --- a/service/security/test/src/test/java/org/eclipse/kapua/service/security/test/SecurityLocatorConfiguration.java +++ b/service/security/test/src/test/java/org/eclipse/kapua/service/security/test/SecurityLocatorConfiguration.java @@ -21,7 +21,7 @@ import io.cucumber.java.Before; import org.eclipse.kapua.KapuaException; import org.eclipse.kapua.KapuaRuntimeException; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.RootUserTester; import org.eclipse.kapua.commons.configuration.ServiceConfigImplJpaRepository; import org.eclipse.kapua.commons.configuration.ServiceConfigurationManager; @@ -179,8 +179,8 @@ protected void configure() { bind(UserFactory.class).toInstance(userFactory); final RootUserTester rootUserTester = Mockito.mock(RootUserTester.class); bind(RootUserTester.class).toInstance(rootUserTester); - final AccountChildrenFinder accountChildrenFinder = Mockito.mock(AccountChildrenFinder.class); - bind(AccountChildrenFinder.class).toInstance(accountChildrenFinder); + final AccountRelativeFinder accountRelativeFinder = Mockito.mock(AccountRelativeFinder.class); + bind(AccountRelativeFinder.class).toInstance(accountRelativeFinder); bind(UserService.class).toInstance(new UserServiceImpl( Mockito.mock(ServiceConfigurationManager.class), mockedAuthorization, diff --git a/service/tag/internal/src/main/java/org/eclipse/kapua/service/tag/internal/TagModule.java b/service/tag/internal/src/main/java/org/eclipse/kapua/service/tag/internal/TagModule.java index 4305f4da826..694d1ed1f0f 100644 --- a/service/tag/internal/src/main/java/org/eclipse/kapua/service/tag/internal/TagModule.java +++ b/service/tag/internal/src/main/java/org/eclipse/kapua/service/tag/internal/TagModule.java @@ -14,7 +14,7 @@ import com.google.inject.Provides; import com.google.inject.multibindings.ProvidesIntoSet; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.CachingServiceConfigRepository; import org.eclipse.kapua.commons.configuration.ResourceLimitedServiceConfigurationManagerImpl; import org.eclipse.kapua.commons.configuration.RootUserTester; @@ -71,7 +71,7 @@ public Domain tagDomain() { ServiceConfigurationManager tagServiceConfigurationManager( TagFactory factory, RootUserTester rootUserTester, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, TagRepository tagRepository, EntityCacheFactory entityCacheFactory ) { @@ -83,7 +83,7 @@ ServiceConfigurationManager tagServiceConfigurationManager( entityCacheFactory.createCache("AbstractKapuaConfigurableServiceCacheId") ), rootUserTester, - accountChildrenFinder, + accountRelativeFinder, new UsedEntitiesCounterImpl( factory, tagRepository 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 b3e747c5b4b..f867da80f3f 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 @@ -20,7 +20,7 @@ import com.google.inject.name.Names; import io.cucumber.java.Before; import org.eclipse.kapua.KapuaException; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.RootUserTester; import org.eclipse.kapua.commons.configuration.ServiceConfigurationManager; import org.eclipse.kapua.commons.configuration.metatype.KapuaMetatypeFactoryImpl; @@ -137,7 +137,7 @@ protected void configure() { bind(KapuaMetatypeFactory.class).toInstance(new KapuaMetatypeFactoryImpl()); // binding Account related services - bind(AccountChildrenFinder.class).toInstance(Mockito.mock(AccountChildrenFinder.class)); + bind(AccountRelativeFinder.class).toInstance(Mockito.mock(AccountRelativeFinder.class)); bind(AccountService.class).toInstance(Mockito.mock(AccountService.class)); bind(AccountFactory.class).toInstance(Mockito.spy(new AccountFactoryImpl())); bind(RootUserTester.class).toInstance(Mockito.mock(RootUserTester.class)); diff --git a/service/user/internal/src/main/java/org/eclipse/kapua/service/user/internal/UserModule.java b/service/user/internal/src/main/java/org/eclipse/kapua/service/user/internal/UserModule.java index f32314316ec..b5314fe2d5d 100644 --- a/service/user/internal/src/main/java/org/eclipse/kapua/service/user/internal/UserModule.java +++ b/service/user/internal/src/main/java/org/eclipse/kapua/service/user/internal/UserModule.java @@ -14,7 +14,7 @@ import com.google.inject.Provides; import com.google.inject.multibindings.ProvidesIntoSet; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.CachingServiceConfigRepository; import org.eclipse.kapua.commons.configuration.ResourceLimitedServiceConfigurationManagerImpl; import org.eclipse.kapua.commons.configuration.RootUserTester; @@ -124,7 +124,7 @@ public ServiceModule userServiceModule(UserService userService, ServiceConfigurationManager userServiceConfigurationManager( UserFactory userFactory, RootUserTester rootUserTester, - AccountChildrenFinder accountChildrenFinder, + AccountRelativeFinder accountRelativeFinder, UserRepository userRepository, KapuaJpaRepositoryConfiguration jpaRepoConfig, EntityCacheFactory entityCacheFactory @@ -136,7 +136,7 @@ ServiceConfigurationManager userServiceConfigurationManager( entityCacheFactory.createCache("AbstractKapuaConfigurableServiceCacheId") ), rootUserTester, - accountChildrenFinder, + accountRelativeFinder, new UsedEntitiesCounterImpl( userFactory, userRepository diff --git a/service/user/test/src/test/java/org/eclipse/kapua/service/user/test/UserLocatorConfiguration.java b/service/user/test/src/test/java/org/eclipse/kapua/service/user/test/UserLocatorConfiguration.java index a7aaecbb482..110fa9a5995 100644 --- a/service/user/test/src/test/java/org/eclipse/kapua/service/user/test/UserLocatorConfiguration.java +++ b/service/user/test/src/test/java/org/eclipse/kapua/service/user/test/UserLocatorConfiguration.java @@ -20,7 +20,7 @@ import com.google.inject.name.Names; import io.cucumber.java.Before; import org.eclipse.kapua.KapuaException; -import org.eclipse.kapua.commons.configuration.AccountChildrenFinder; +import org.eclipse.kapua.commons.configuration.AccountRelativeFinder; import org.eclipse.kapua.commons.configuration.ResourceLimitedServiceConfigurationManagerImpl; import org.eclipse.kapua.commons.configuration.RootUserTester; import org.eclipse.kapua.commons.configuration.ServiceConfigImplJpaRepository; @@ -109,8 +109,8 @@ protected void configure() { bind(KapuaMetatypeFactory.class).toInstance(new KapuaMetatypeFactoryImpl()); // binding Account related services - final AccountChildrenFinder accountChildrenFinder = Mockito.mock(AccountChildrenFinder.class); - bind(AccountChildrenFinder.class).toInstance(accountChildrenFinder); + final AccountRelativeFinder accountRelativeFinder = Mockito.mock(AccountRelativeFinder.class); + bind(AccountRelativeFinder.class).toInstance(accountRelativeFinder); // Inject actual User service related services final UserFactoryImpl userFactory = new UserFactoryImpl(); @@ -122,7 +122,7 @@ protected void configure() { final ResourceLimitedServiceConfigurationManagerImpl userConfigurationManager = new ResourceLimitedServiceConfigurationManagerImpl(UserService.class.getName(), new ServiceConfigImplJpaRepository(jpaRepoConfig), Mockito.mock(RootUserTester.class), - accountChildrenFinder, + accountRelativeFinder, new UsedEntitiesCounterImpl( userFactory, userRepository)