MARMOTTA-556: fixed dataset support
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/22d16b35 Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/22d16b35 Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/22d16b35 Branch: refs/heads/MARMOTTA-556 Commit: 22d16b352a87d1ac7366f79b027a6137da756ebc Parents: d99de51 Author: Sergio Fernández <[email protected]> Authored: Fri Oct 24 22:02:25 2014 +0200 Committer: Sergio Fernández <[email protected]> Committed: Fri Oct 24 22:02:25 2014 +0200 ---------------------------------------------------------------------- .../marmotta/platform/ldf/api/LdfService.java | 9 +++--- .../platform/ldf/services/LdfServiceImpl.java | 14 ++++----- .../platform/ldf/sesame/LdfRDFHandler.java | 2 +- .../platform/ldf/webservices/LdfWebService.java | 33 +++++++------------- 4 files changed, 25 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/22d16b35/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java index 9496589..a1d2dce 100644 --- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java +++ b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/api/LdfService.java @@ -22,6 +22,7 @@ import org.openrdf.model.URI; import org.openrdf.rio.RDFFormat; import org.openrdf.model.Value; import org.openrdf.repository.RepositoryException; +import org.openrdf.rio.RDFHandlerException; import java.io.OutputStream; @@ -45,7 +46,7 @@ public interface LdfService { * @param format RDF serialization * @param out output stream where write the fragment */ - void writeFragment(String subject, String predicate, String object, int page, RDFFormat format, OutputStream out) throws RepositoryException; + void writeFragment(String subject, String predicate, String object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException; /** * Writes a fragment matching the specified triple fragment pattern @@ -58,7 +59,7 @@ public interface LdfService { * @param format RDF serialization * @param out output stream where write the fragment */ - void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException; + void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException; /** * Writes a fragment matching the specified quad fragment pattern @@ -72,7 +73,7 @@ public interface LdfService { * @param format RDF serialization * @param out output stream where write the fragment */ - void writeFragment(String subject, String predicate, String object, String context, int page, RDFFormat format, OutputStream out) throws RepositoryException; + void writeFragment(String subject, String predicate, String object, String context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException; /** * Writes a fragment matching the specified quad fragment pattern @@ -86,6 +87,6 @@ public interface LdfService { * @param format RDF serialization * @param out output stream where write the fragment */ - void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException; + void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException; } http://git-wip-us.apache.org/repos/asf/marmotta/blob/22d16b35/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java index 3f906da..580cb25 100644 --- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java +++ b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/services/LdfServiceImpl.java @@ -48,17 +48,17 @@ public class LdfServiceImpl implements LdfService { private SesameService sesameService; @Override - public void writeFragment(String subjectStr, String predicateStr, String objectStr, int page, RDFFormat format, OutputStream out) throws RepositoryException { + public void writeFragment(String subjectStr, String predicateStr, String objectStr, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException { writeFragment(subjectStr, predicateStr, objectStr, null, page, format, out); } @Override - public void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException { + public void writeFragment(URI subject, URI predicate, Value object, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException { writeFragment(subject, predicate, object, null, page, format, out); } @Override - public void writeFragment(String subjectStr, String predicateStr, String objectStr, String contextStr, int page, RDFFormat format, OutputStream out) throws RepositoryException { + public void writeFragment(String subjectStr, String predicateStr, String objectStr, String contextStr, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException { final ValueFactoryImpl vf = new ValueFactoryImpl(); URI subject = null; @@ -105,17 +105,17 @@ public class LdfServiceImpl implements LdfService { } @Override - public void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException { + public void writeFragment(URI subject, URI predicate, Value object, Resource context, int page, RDFFormat format, OutputStream out) throws RepositoryException, RDFHandlerException { final RepositoryConnection conn = sesameService.getConnection(); try { conn.begin(); RepositoryResult<Statement> statements = conn.getStatements(subject, predicate, object, true, context); RDFHandler handler = new LdfRDFHandler(Rio.createWriter(format, out), context, page); Rio.write(ResultUtils.iterable(statements), handler); - } catch (RDFHandlerException e) { - e.printStackTrace(); } finally { - conn.close(); + if (conn != null && conn.isOpen()) { + conn.close(); + } } } http://git-wip-us.apache.org/repos/asf/marmotta/blob/22d16b35/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java index 2ba0e21..5164705 100644 --- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java +++ b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/sesame/LdfRDFHandler.java @@ -128,7 +128,7 @@ public class LdfRDFHandler implements RDFHandler { final int size = statements.size(); final int offset = LdfService.PAGE_SIZE * (page - 1); if (offset > size) { - throw new IllegalArgumentException("page " + page + " can't be generated"); + throw new RDFHandlerException("page " + page + " can't be generated"); } final int limit = LdfService.PAGE_SIZE < size-offset ? LdfService.PAGE_SIZE : size-offset; List<Statement> filteredStatements = statements.subList(offset, limit); http://git-wip-us.apache.org/repos/asf/marmotta/blob/22d16b35/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java index cc09402..0cc1f09 100644 --- a/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java +++ b/platform/marmotta-ldf/src/main/java/org/apache/marmotta/platform/ldf/webservices/LdfWebService.java @@ -9,6 +9,7 @@ import org.apache.marmotta.platform.core.util.WebServiceUtil; import org.apache.marmotta.platform.ldf.api.LdfService; import org.openrdf.repository.RepositoryException; import org.openrdf.rio.RDFFormat; +import org.openrdf.rio.RDFHandlerException; import org.openrdf.rio.Rio; import javax.enterprise.context.ApplicationScoped; @@ -50,7 +51,6 @@ public class LdfWebService { @QueryParam("object") @DefaultValue("") String object, @QueryParam("page") @DefaultValue("1") String page, @HeaderParam("Accept") String accept) { - System.out.println("1"); return getFragment(subject, predicate, object, null, Integer.parseInt(page), accept); } @@ -62,7 +62,6 @@ public class LdfWebService { @QueryParam("page") @DefaultValue("1") String page, @PathParam("uuid") String uuid, @HeaderParam("Accept") String accept) { - System.out.println("2"); final String context = buildContextUri(uuid); return getFragment(subject, predicate, object, context, Integer.parseInt(page), accept); } @@ -73,26 +72,19 @@ public class LdfWebService { final String context, final int page, final String accept) { - System.out.println("3"); final RDFFormat format = getFormat(accept); - try { - StreamingOutput stream = new StreamingOutput() { - @Override - public void write(OutputStream outputStream) throws IOException, WebApplicationException { - try { - ldfService.writeFragment(subject, predicate, object, context, page, format, outputStream); - } catch (RepositoryException e) { - throw new WebApplicationException(e); - } + StreamingOutput stream = new StreamingOutput() { + @Override + public void write(OutputStream outputStream) throws IOException, WebApplicationException { + try { + ldfService.writeFragment(subject, predicate, object, context, page, format, outputStream); + } catch (RepositoryException | RDFHandlerException | IllegalArgumentException e) { + throw new WebApplicationException(e); } - }; - return Response.ok(stream).build(); - } catch (WebApplicationException e) { - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } catch (IllegalArgumentException e) { - return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build(); - } + } + }; + return Response.ok(stream).build(); } private RDFFormat getFormat(String accept) { @@ -105,8 +97,7 @@ public class LdfWebService { private String buildContextUri(String uuid) { if (StringUtils.isNotBlank(uuid)) { - String root = configurationService.getBaseUri(); - return root.substring(0, root.length() - 1) + WebServiceUtil.getResourcePath(this) + "/" + uuid; + return configurationService.getBaseUri() + ConfigurationService.CONTEXT_PATH + "/" + uuid; } else { return null; }
