Skip to content

Commit cee284a

Browse files
author
mielvds
committed
Merge pull request #30 from hartig/ClosableFragments
Makes fragments closable
2 parents 9f4fe2a + 0ad4fc3 commit cee284a

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

src/org/linkeddatafragments/fragments/ILinkedDataFragment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package org.linkeddatafragments.fragments;
22

3+
import java.io.Closeable;
4+
35
import com.hp.hpl.jena.rdf.model.StmtIterator;
46

57
/**
68
* Represents any possible Linked Data Fragment.
79
*
810
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
911
*/
10-
public interface ILinkedDataFragment
12+
public interface ILinkedDataFragment extends Closeable
1113
{
1214
/**
1315
* Returns an iterator over the RDF data of this fragment (possibly only

src/org/linkeddatafragments/fragments/LinkedDataFragmentBase.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@ protected LinkedDataFragmentBase( final String fragmentURL,
3434
this.isLastPage = isLastPage;
3535
}
3636

37+
/**
38+
* Does nothing. May be overridden by subclasses that hold some objects
39+
* that need to be closed (such as iterators from the underlying data
40+
* source).
41+
*/
42+
@Override
43+
public void close() {}
44+
3745
@Override
3846
public boolean isPageOnly() {
3947
return true;

src/org/linkeddatafragments/servlet/LinkedDataFragmentServlet.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,16 +138,16 @@ private IDataSource getDataSource(HttpServletRequest request) throws DataSourceN
138138

139139
@Override
140140
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
141+
ILinkedDataFragment fragment = null;
141142
try {
142143
final IDataSource dataSource = getDataSource( request );
143144

144145
final ILinkedDataFragmentRequest ldfRequest =
145146
dataSource.getRequestParser()
146147
.parseIntoFragmentRequest( request, config );
147148

148-
final ILinkedDataFragment fragment =
149-
dataSource.getRequestProcessor()
150-
.createRequestedFragment( ldfRequest );
149+
fragment = dataSource.getRequestProcessor()
150+
.createRequestedFragment( ldfRequest );
151151

152152
final Model output = ModelFactory.createDefaultModel();
153153
output.setNsPrefixes(config.getPrefixes());
@@ -176,6 +176,17 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
176176
throw new ServletException(ex1);
177177
}
178178
}
179+
finally {
180+
// close the fragment
181+
if ( fragment != null ) {
182+
try {
183+
fragment.close();
184+
}
185+
catch ( Exception e ) {
186+
// ignore
187+
}
188+
}
189+
}
179190
}
180191

181192
}

0 commit comments

Comments
 (0)