ActivityPubStoreRepositoryDefault.java

package org.linkedopenactors.rdfpub.store.rdf4j;

import java.util.Objects;
import java.util.Optional;

import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.RDF;
import org.linkedopenactors.rdfpub.domain.commonsrdf.ActivityPubObjectFactory;
import org.linkedopenactors.rdfpub.domain.commonsrdf.ActivityPubStore;
import org.linkedopenactors.rdfpub.store.ActivityPubStoreRepository;
import org.linkedopenactors.rdfpub.store.Store;
import org.linkedopenactors.rdfpub.store.StoreRepository;
import org.springframework.stereotype.Component;

@Component
class ActivityPubStoreRepositoryDefault implements ActivityPubStoreRepository {

	private ActivityPubObjectFactory activityPubObjectFactory;
	private RDF rdf;
	private StoreRepository storeRepository;
	
	public ActivityPubStoreRepositoryDefault(RDF rdf,ActivityPubObjectFactory activityPubObjectFactory, StoreRepository storeRepository) {
		this.rdf = rdf;
		this.activityPubObjectFactory = activityPubObjectFactory;
		this.storeRepository = storeRepository;		
	}

	@Override
	public Optional<ActivityPubStore> findActivityPubStore(IRI storeOwner) {
		return storeRepository.findStore(storeOwner).map(store->new ActivityPubStoreDefault(rdf, storeOwner, store, activityPubObjectFactory));
	}

	@Override
	public ActivityPubStore createActivityPubStore(IRI storeOwner) {
		if(Objects.isNull(storeOwner)) {
			throw new IllegalStateException("storeName is mandatory!");
		}
		Store store = storeRepository.createStore(storeOwner);
		return new ActivityPubStoreDefault(rdf, storeOwner, store, activityPubObjectFactory);
	}

	@Override
	public void shutdown() {
		storeRepository.shutdown();		
	}	
}