package org.aksw.jena_sparql_api.core;
import org.apache.http.client.HttpClient;
import org.apache.jena.sparql.core.DatasetDescription;
import com.google.common.base.Predicate;
public class SparqlServiceFactoryDefaults
implements SparqlServiceFactory
{
protected SparqlServiceFactory delegate;
protected String defaultServiceUri;
protected Predicate<String> serviceUriValidator;
public SparqlServiceFactoryDefaults(SparqlServiceFactory delegate, String defaultServiceUri, Predicate<String> serviceUriValidator) {
super();
this.delegate = delegate;
this.defaultServiceUri = defaultServiceUri;
this.serviceUriValidator = serviceUriValidator;
}
@Override
public SparqlService createSparqlService(
String serviceUri, DatasetDescription datasetDescription, HttpClient httpClient) {
if(serviceUri == null) {
serviceUri = defaultServiceUri;
} else if(serviceUriValidator != null) {
boolean isValidService = serviceUriValidator.apply(serviceUri);
if(!isValidService) {
throw new RuntimeException("Access to service not allowed " + serviceUri);
}
}
SparqlService result = delegate.createSparqlService(serviceUri, datasetDescription, httpClient);
return result;
}
}