private List<Repository> allMembers(final Repository repository) { if (groupType.equals(repository.getType())) { return repository.facet(GroupFacet.class).allMembers(); } else { return Collections.singletonList(repository); } }
private Asset getAssetById(final Repository repository, final EntityId assetId) { Optional<GroupFacet> optionalGroupFacet = repository.optionalFacet(GroupFacet.class); List<Repository> members = optionalGroupFacet.isPresent() ? optionalGroupFacet.get().allMembers() : Collections.singletonList(repository); return Transactional.operation.withDb(repository.facet(StorageFacet.class).txSupplier()).call(() -> { StorageTx tx = UnitOfWork.currentTx(); Asset candidate = tx.findAsset(assetId); if (candidate != null) { final String asssetBucketRepositoryName = bucketStore.getById(candidate.bucketId()).getRepositoryName(); if (members.stream().anyMatch(repo -> repo.getName().equals(asssetBucketRepositoryName))) { return candidate; } } return null; }); }