diff --git a/core/src/main/java/io/github/mmm/entity/impl/EntityRepositoryManagerImpl.java b/core/src/main/java/io/github/mmm/entity/impl/EntityRepositoryManagerImpl.java index 3a86c6b..d16d651 100644 --- a/core/src/main/java/io/github/mmm/entity/impl/EntityRepositoryManagerImpl.java +++ b/core/src/main/java/io/github/mmm/entity/impl/EntityRepositoryManagerImpl.java @@ -9,6 +9,7 @@ import io.github.mmm.base.collection.ReadOnlyIterator; import io.github.mmm.base.exception.ObjectNotFoundException; +import io.github.mmm.base.service.ServiceHelper; import io.github.mmm.entity.Entity; import io.github.mmm.entity.repository.EntityRepository; import io.github.mmm.entity.repository.EntityRepositoryManager; @@ -18,40 +19,35 @@ * * @since 1.0.0 */ -@SuppressWarnings("rawtypes") public class EntityRepositoryManagerImpl implements EntityRepositoryManager { /** The singleton instance. */ public static final EntityRepositoryManagerImpl INSTANCE = new EntityRepositoryManagerImpl(); - private final Map> repositoryMap; + private final Map, EntityRepository> repositoryMap; /** * The constructor. */ + @SuppressWarnings({ "unchecked", "rawtypes" }) public EntityRepositoryManagerImpl() { super(); this.repositoryMap = new HashMap<>(); - ServiceLoader serviceLoader = ServiceLoader.load(EntityRepository.class); - for (EntityRepository repository : serviceLoader) { - registerRepository(repository); - } + ServiceLoader> serviceLoader = (ServiceLoader) ServiceLoader.load(EntityRepository.class); + ServiceHelper.all(serviceLoader, this.repositoryMap, EntityRepositoryManagerImpl::getEntityClass); } - /** - * @param repository the {@link EntityRepository} to register. - */ - private void registerRepository(EntityRepository repository) { + private static Class getEntityClass(EntityRepository repository) { Class entityClass = repository.getEntityClass(); if (entityClass == null) { throw new ObjectNotFoundException("EntityClass", repository); } - this.repositoryMap.put(entityClass, repository); + return entityClass; } - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public EntityRepository getRepository(Class entityClass) {