package org.molgenis.data; import org.molgenis.data.index.IndexActionRegisterService; import org.molgenis.data.index.IndexActionRepositoryCollectionDecorator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import static java.util.Objects.requireNonNull; /** * Applies decorators to all {@link RepositoryCollection RepositoryCollections}. */ @Component public class RepositoryCollectionDecoratorFactory { private final RepositoryDecoratorFactory repositoryDecoratorFactory; private final IndexActionRegisterService indexActionRegisterService; @Autowired public RepositoryCollectionDecoratorFactory(RepositoryDecoratorFactory repositoryDecoratorFactory, IndexActionRegisterService indexActionRegisterService) { this.repositoryDecoratorFactory = requireNonNull(repositoryDecoratorFactory); this.indexActionRegisterService = requireNonNull(indexActionRegisterService); } RepositoryCollection createDecoratedRepositoryCollection(RepositoryCollection repositoryCollection) { RepositoryCollection repoCollectionDecorator = new RepositoryCollectionDecorator(repositoryCollection, repositoryDecoratorFactory); repoCollectionDecorator = new IndexActionRepositoryCollectionDecorator(repoCollectionDecorator, indexActionRegisterService); return repoCollectionDecorator; } }