private boolean repositoryHasCleanupPolicy(final Repository repository, final String cleanupPolicyName) { return ofNullable(repository.getConfiguration()) .map(Configuration::getAttributes) .map(attributes -> attributes.get(CLEANUP_ATTRIBUTES_KEY)) .filter(Objects::nonNull) .map(cleanupPolicyMap -> cleanupPolicyMap.get(CLEANUP_NAME_KEY)) .filter(cleanupPolicyName::equals) .isPresent(); } }
private BlobStore getBlobStoreForRepository(final Repository repository) { String blobStoreName = (String) repository.getConfiguration().getAttributes().get(STORAGE_KEY) .get(BLOB_STORE_NAME_KEY); return blobStoreManager.get(blobStoreName); }
private void validateRepositoryConfiguration(final Repository repository) { checkArgument(repository.getConfiguration().getAttributes() != null, "Repository configuration not found " + repository.getName()); checkArgument(repository.getConfiguration().getAttributes().get(STORAGE_KEY) != null, "No storage configuration found for the repository " + repository.getName()); checkArgument( isNotBlank((String) repository.getConfiguration().getAttributes().get(STORAGE_KEY).get(BLOB_STORE_NAME_KEY)), "Blob store name not set for repository " + repository.getName()); } }
@Override public void save() throws Exception { store.update(getRepository().getConfiguration()); log.debug("Saved"); }
private Optional<CleanupPolicy> findPolicy(final Repository repository) { Map<String, Map<String, Object>> attributes = repository.getConfiguration().getAttributes(); if (attributes != null && attributes.containsKey(CLEANUP_ATTRIBUTES_KEY)) { String policyName = (String) attributes.get(CLEANUP_ATTRIBUTES_KEY).get(CLEANUP_NAME_KEY); log.debug("Cleanup policy '{}' found for repository {}", policyName, repository.getName()); return ofNullable(cleanupPolicyStorage.get(policyName)); } log.debug("No cleanup policy found for repository {}", repository.getName()); return empty(); } }
private static boolean repoOnlineAndHasSearchFacet(final Repository repo) { return repo.optionalFacet(SearchFacet.class).isPresent() && repo.getConfiguration().isOnline(); }
private void removeRepositoryFromGroup(final Repository repositoryToRemove, final Repository group) throws Exception { NestedAttributesMap groupAttributes = group.getConfiguration().attributes("group"); groupAttributes.get("memberNames", Collection.class).remove(repositoryToRemove.getName()); update(group.getConfiguration()); }
@Override @Guarded(by = STARTED) public Iterable<Repository> browseForBlobStore(String blobStoreId) { return stream(browse().spliterator(), true) .filter(r -> blobStoreId.equals(r.getConfiguration().attributes(STORAGE).get(BLOB_STORE_NAME))) ::iterator; }
@Override @Guarded(by = STOPPED) public void update() throws Exception { doUpdate(getRepository().getConfiguration()); }
@Override @Transitions(from = ATTACHED, to = INITIALISED) public void init() throws Exception { doInit(getRepository().getConfiguration()); }
@Subscribe @AllowConcurrentEvents public void on(final CleanupPolicyDeletedEvent event) { if (shouldProcess(event)) { CleanupPolicy cleanupPolicy = event.getCleanupPolicy(); repositoryManager .browseForCleanupPolicy(cleanupPolicy.getName()) .forEach(repository -> remove(repository.getConfiguration().copy(), cleanupPolicy)); } }
@Override @AllowConcurrentEvents @Subscribe public void handle(final RepositoryCreatedEvent event) { if (sameRepositoryAs(event.getRepository().getName())) { setSatisfied(event.getRepository().getConfiguration().isOnline()); } }
@AllowConcurrentEvents @Subscribe public void handle(final RepositoryUpdatedEvent event) { if (sameRepositoryAs(event.getRepository().getName())) { setSatisfied(event.getRepository().getConfiguration().isOnline()); } }
private void createHttpClient() { // construct http client delegate HttpClientConfiguration delegateConfig = new HttpClientConfiguration(); delegateConfig.setConnection(config.connection); delegateConfig.setAuthentication(config.authentication); CloseableHttpClient delegate = httpClientManager.create(new ConfigurationCustomizer(delegateConfig)); boolean online = getRepository().getConfiguration().isOnline(); // wrap delegate with auto-block aware client httpClient = new BlockingHttpClient(delegate, config, this, online, getAutoBlockConfiguration()); log.debug("Created HTTP client: {}", httpClient); }
@Override @Guarded(by = STARTED) public void delete(final String name) throws Exception { checkNotNull(name); databaseFreezeService.checkUnfrozen("Unable to delete repository when database is frozen."); log.info("Deleting repository: {}", name); Repository repository = repository(name); Configuration configuration = repository.getConfiguration(); removeRepositoryFromAllGroups(repository); repository.stop(); repository.delete(); repository.destroy(); if (!EventHelper.isReplicating()) { store.delete(configuration); } untrack(repository); eventManager.post(new RepositoryDeletedEvent(repository)); }