Skip to content

Commit

Permalink
#630 simplified ActiveTransactionRegistry now keeps track of dedicate…
Browse files Browse the repository at this point in the history
…d txn threads

Signed-off-by: Jeen Broekstra <jeen.broekstra@gmail.com>
  • Loading branch information
abrokenjester committed Oct 28, 2016
1 parent 3fc3a21 commit ad6fec8
Show file tree
Hide file tree
Showing 8 changed files with 792 additions and 522 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,11 @@
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.rdf4j.common.lang.FileFormat;
import org.eclipse.rdf4j.http.server.repository.transaction.ActiveTransactionRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.View;
Expand Down Expand Up @@ -63,16 +61,7 @@ public abstract class QueryResultView implements View {
public final void render(Map model, HttpServletRequest request, HttpServletResponse response)
throws IOException
{
UUID txnId = null;
try {
txnId = (UUID)model.get(TRANSACTION_ID_KEY);
renderInternal(model, request, response);
}
finally {
if (txnId != null) {
ActiveTransactionRegistry.INSTANCE.returnTransactionConnection(txnId);
}
}
renderInternal(model, request, response);
}

@SuppressWarnings("rawtypes")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,12 @@
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.rdf4j.http.server.ServerHTTPException;
import org.eclipse.rdf4j.http.server.repository.RepositoryInterceptor;
import org.eclipse.rdf4j.http.server.repository.transaction.ActiveTransactionRegistry;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Resource;
import org.eclipse.rdf4j.model.Value;
Expand Down Expand Up @@ -74,62 +72,53 @@ public String getContentType() {
public void render(Map model, HttpServletRequest request, HttpServletResponse response)
throws Exception
{
UUID txnId = null;
try {
txnId = (UUID)model.get(TRANSACTION_ID_KEY);
Resource subj = (Resource)model.get(SUBJECT_KEY);
IRI pred = (IRI)model.get(PREDICATE_KEY);
Value obj = (Value)model.get(OBJECT_KEY);
Resource[] contexts = (Resource[])model.get(CONTEXTS_KEY);
boolean useInferencing = (Boolean)model.get(USE_INFERENCING_KEY);
RepositoryConnection conn = (RepositoryConnection)model.get(CONNECTION_KEY);
Resource subj = (Resource)model.get(SUBJECT_KEY);
IRI pred = (IRI)model.get(PREDICATE_KEY);
Value obj = (Value)model.get(OBJECT_KEY);
Resource[] contexts = (Resource[])model.get(CONTEXTS_KEY);
boolean useInferencing = (Boolean)model.get(USE_INFERENCING_KEY);
RepositoryConnection conn = (RepositoryConnection)model.get(CONNECTION_KEY);

boolean headersOnly = (Boolean)model.get(HEADERS_ONLY);
boolean headersOnly = (Boolean)model.get(HEADERS_ONLY);

RDFWriterFactory rdfWriterFactory = (RDFWriterFactory)model.get(FACTORY_KEY);
RDFWriterFactory rdfWriterFactory = (RDFWriterFactory)model.get(FACTORY_KEY);

RDFFormat rdfFormat = rdfWriterFactory.getRDFFormat();
RDFFormat rdfFormat = rdfWriterFactory.getRDFFormat();

try {
OutputStream out = response.getOutputStream();
RDFWriter rdfWriter = rdfWriterFactory.getWriter(out);
try {
OutputStream out = response.getOutputStream();
RDFWriter rdfWriter = rdfWriterFactory.getWriter(out);

response.setStatus(SC_OK);
response.setStatus(SC_OK);

String mimeType = rdfFormat.getDefaultMIMEType();
if (rdfFormat.hasCharset()) {
Charset charset = rdfFormat.getCharset();
mimeType += "; charset=" + charset.name();
}
response.setContentType(mimeType);
String mimeType = rdfFormat.getDefaultMIMEType();
if (rdfFormat.hasCharset()) {
Charset charset = rdfFormat.getCharset();
mimeType += "; charset=" + charset.name();
}
response.setContentType(mimeType);

String filename = "statements";
if (rdfFormat.getDefaultFileExtension() != null) {
filename += "." + rdfFormat.getDefaultFileExtension();
}
response.setHeader("Content-Disposition", "attachment; filename=" + filename);

String filename = "statements";
if (rdfFormat.getDefaultFileExtension() != null) {
filename += "." + rdfFormat.getDefaultFileExtension();
if (!headersOnly) {
if (conn == null) {
conn = RepositoryInterceptor.getRepositoryConnection(request);
}
response.setHeader("Content-Disposition", "attachment; filename=" + filename);

if (!headersOnly) {
if (conn == null) {
conn = RepositoryInterceptor.getRepositoryConnection(request);
}
synchronized (conn) {
conn.exportStatements(subj, pred, obj, useInferencing, rdfWriter, contexts);
}
synchronized (conn) {
conn.exportStatements(subj, pred, obj, useInferencing, rdfWriter, contexts);
}
out.close();
}
catch (RDFHandlerException e) {
throw new ServerHTTPException("Serialization error: " + e.getMessage(), e);
}
catch (RepositoryException e) {
throw new ServerHTTPException("Repository error: " + e.getMessage(), e);
}
out.close();
}
finally {
if (txnId != null) {
ActiveTransactionRegistry.INSTANCE.returnTransactionConnection(txnId);
}
catch (RDFHandlerException e) {
throw new ServerHTTPException("Serialization error: " + e.getMessage(), e);
}
catch (RepositoryException e) {
throw new ServerHTTPException("Repository error: " + e.getMessage(), e);
}
}

Expand Down

0 comments on commit ad6fec8

Please sign in to comment.