NIHVIVO-3810 intercepting RDFService.close() when using a factory with single service instance

This commit is contained in:
brianjlowe 2012-06-25 14:10:16 +00:00
parent ffce3efe91
commit 0b014fb3de
2 changed files with 100 additions and 2 deletions

View file

@ -152,7 +152,9 @@ public class WebappDaoFactorySDB extends WebappDaoFactoryJena {
@Override
public void close() {
super.close();
//this.rdfService.close();
if (this.rdfService != null) {
this.rdfService.close();
}
}
private class ReconnectingDatasetFactory implements DatasetWrapperFactory {

View file

@ -2,7 +2,11 @@
package edu.cornell.mannlib.vitro.webapp.rdfservice.impl;
import java.io.InputStream;
import java.util.List;
import edu.cornell.mannlib.vitro.webapp.rdfservice.ChangeListener;
import edu.cornell.mannlib.vitro.webapp.rdfservice.ChangeSet;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceFactory;
@ -17,7 +21,7 @@ public class RDFServiceFactorySingle implements RDFServiceFactory {
private RDFService rdfService;
public RDFServiceFactorySingle(RDFService rdfService) {
this.rdfService = rdfService;
this.rdfService = new UnclosableRDFService(rdfService);
}
@Override
@ -34,5 +38,97 @@ public class RDFServiceFactorySingle implements RDFServiceFactory {
public void unregisterListener(ChangeListener listener) throws RDFServiceException {
this.rdfService.unregisterListener(listener);
}
public class UnclosableRDFService implements RDFService {
private RDFService s;
public UnclosableRDFService(RDFService rdfService) {
this.s = rdfService;
}
@Override
public boolean changeSetUpdate(ChangeSet changeSet)
throws RDFServiceException {
return s.changeSetUpdate(changeSet);
}
@Override
public void newIndividual(String individualURI, String individualTypeURI)
throws RDFServiceException {
s.newIndividual(individualURI, individualTypeURI);
}
@Override
public void newIndividual(String individualURI,
String individualTypeURI, String graphURI)
throws RDFServiceException {
s.newIndividual(individualURI, individualTypeURI, graphURI);
}
@Override
public InputStream sparqlConstructQuery(String query,
ModelSerializationFormat resultFormat)
throws RDFServiceException {
return s.sparqlConstructQuery(query, resultFormat);
}
@Override
public InputStream sparqlDescribeQuery(String query,
ModelSerializationFormat resultFormat)
throws RDFServiceException {
return s.sparqlDescribeQuery(query, resultFormat);
}
@Override
public InputStream sparqlSelectQuery(String query,
ResultFormat resultFormat) throws RDFServiceException {
return s.sparqlSelectQuery(query, resultFormat);
}
@Override
public boolean sparqlAskQuery(String query) throws RDFServiceException {
return s.sparqlAskQuery(query);
}
@Override
public List<String> getGraphURIs() throws RDFServiceException {
return s.getGraphURIs();
}
@Override
public void getGraphMetadata() throws RDFServiceException {
s.getGraphMetadata();
}
@Override
public String getDefaultWriteGraphURI() throws RDFServiceException {
return s.getDefaultWriteGraphURI();
}
@Override
public void registerListener(ChangeListener changeListener)
throws RDFServiceException {
s.registerListener(changeListener);
}
@Override
public void unregisterListener(ChangeListener changeListener)
throws RDFServiceException {
s.unregisterListener(changeListener);
}
@Override
public ChangeSet manufactureChangeSet() {
return s.manufactureChangeSet();
}
@Override
public void close() {
// Don't close s. It's being used by everybody.
}
}
}