Modified: incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java?rev=1160643&r1=1160642&r2=1160643&view=diff ============================================================================== --- incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java (original) +++ incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java Tue Aug 23 12:02:24 2011 @@ -63,254 +63,229 @@ import com.sun.jersey.multipart.FormData @Path("/reasoners/services/{service}/{task}") public class ReasoningServiceTaskResource extends BaseStanbolResource { - private Logger log = LoggerFactory.getLogger(getClass()); - private ServletContext context; + private Logger log = LoggerFactory.getLogger(getClass()); + private ServletContext context; - /** - * TODO: We may want to extend the possible tasks in the future, demanding - * the execution to some delegate... - */ - public static final String[] TASKS = { "enrich", "classify", "check" }; - - private ReasoningService service; - private String taskID; - - public ReasoningServiceTaskResource( - @PathParam(value = "service") String serviceID, - @PathParam(value = "task") String taskID, - @Context ServletContext servletContext) { - super(); - this.context = servletContext; - // Retrieve the service - try { - service = getService(serviceID); - } catch (UnboundReasoningServiceException e) { - log.error("Service not found: {}", serviceID); - throw new WebApplicationException(e, Response.Status.NOT_FOUND); - } - // Check if the task is allowed - if (Arrays.asList(TASKS).contains(taskID)) { - this.taskID = taskID; - } else { - log.error("Unsupported task (not found): {}", taskID); - throw new WebApplicationException(new Exception( - "Unsupported task (not found): " + taskID), - Response.Status.BAD_REQUEST); - } - - // Now we check if the service implementation is supported - if (getCurrentService() instanceof JenaReasoningService) { - } else if (getCurrentService() instanceof OWLApiReasoningService) { - } else { - log.error( - "This implementation of ReasoningService is not supported: {}", - getCurrentService().getClass()); - throw new WebApplicationException(new Exception( - "This implementation of ReasoningService is not supported: " - + getCurrentService().getClass()), - Response.Status.INTERNAL_SERVER_ERROR); - } - } - - @POST - @Consumes({ MULTIPART_FORM_DATA }) - @Produces({ TEXT_HTML, KRFormat.RDF_XML, KRFormat.TURTLE, KRFormat.OWL_XML }) - public Response postData(@FormDataParam("file") File file) { - log.info("Called POST on service {} to perform task {}", service, - taskID); - log.info("on input file: {}", file); - return Response.ok(new Viewable("index", this), TEXT_HTML).build(); - } - - private boolean isHTML(HttpHeaders headers) { - // We only want to state if HTML format is the preferred format - // requested - Set<String> htmlformats = new HashSet<String>(); - htmlformats.add(TEXT_HTML); - Set<String> rdfformats = new HashSet<String>(); - String[] formats = { TEXT_HTML, "text/plain", KRFormat.RDF_XML, - KRFormat.TURTLE, "text/turtle", "text/n3" }; - rdfformats.addAll(Arrays.asList(formats)); - List<MediaType> mediaTypes = headers.getAcceptableMediaTypes(); - for (MediaType t : mediaTypes) { - String strty = t.toString(); - log.info("Acceptable is {}", t); - if (htmlformats.contains(strty)) { - log.debug("Requested format is HTML {}", t); - return true; - } else if (rdfformats.contains(strty)) { - log.debug("Requested format is RDF {}", t); - return false; - } - } - // Default behavior? Should never happen! - return true; - } - - @GET - @Produces({ TEXT_HTML, "text/plain", KRFormat.RDF_XML, KRFormat.TURTLE, - "text/turtle", "text/n3" }) - public Response get(@QueryParam("url") String url, - @Context HttpHeaders headers) { - - // If url param is missing, we produce the service welcome page - if (url == null) { - return Response.ok(new Viewable("index", this)).build(); - } - log.info("Called GET on service {} to perform task {}", service, taskID); - log.info("on input url: {}", url); - // - if (getCurrentService() instanceof JenaReasoningService) { - JenaReasoningService s = (JenaReasoningService) getCurrentService(); - - if (getCurrentTask().equals("check")) { - log.debug("Task is 'check'"); - boolean isConsistent; - isConsistent = s.isConsistent(ModelFactory.createDefaultModel() - .read(url)); - if (isConsistent) { - log.debug("The input is consistent"); - return Response.ok().build(); - } else { - log.debug("The input is not consistent"); - return Response.status(Status.NO_CONTENT).build(); - } - } - - Set<Statement> result = null; - if (getCurrentTask().equals("classify")) { - log.debug("Task is 'classify'"); - result = s - .classify(ModelFactory.createDefaultModel().read(url)); - } else if (getCurrentTask().equals("enrich")) { - log.debug("Task is: 'enrich'"); - result = s.enrich(ModelFactory.createDefaultModel().read(url)); - } - if (result == null) { - log.error("Result is null"); - throw new WebApplicationException(); - } - log.info("Returning {} statements", result.size()); - Model outputModel = ModelFactory.createDefaultModel(); - outputModel.add(result.toArray(new Statement[result.size()])); - - if (isHTML(headers)) { - - ByteArrayOutputStream out = new ByteArrayOutputStream(); - outputModel.write(out, "TURTLE"); - return Response.ok( - new Viewable("result", - new ReasoningPrettyResultResource(context, - uriInfo, out)), TEXT_HTML).build(); - } else { - return Response.ok(outputModel).build(); - } - - } else if (getCurrentService() instanceof OWLApiReasoningService) { - OWLApiReasoningService s = (OWLApiReasoningService) getCurrentService(); - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - // Listening for missing imports - manager.addMissingImportListener(new MissingImportListener() { - @Override - public void importMissing(MissingImportEvent arg0) { - log.warn("Missing import: {}", - arg0.getImportedOntologyURI()); - } - }); - OWLOntology input = null; - try { - input = manager.loadOntologyFromOntologyDocument(IRI - .create(url)); - } catch (OWLOntologyCreationIOException e) { - throw new WebApplicationException(e, - Response.Status.NOT_FOUND); - } catch (OWLOntologyCreationException e) { - throw new WebApplicationException(e, - Response.Status.INTERNAL_SERVER_ERROR); - } - if (getCurrentTask().equals("check")) { - log.debug("Task is 'check'"); - boolean isConsistent; - - try { - isConsistent = s.isConsistent(input); - if (isConsistent) { - log.debug("The input is consistent"); - return Response.ok().build(); - } else { - log.debug("The input is not consistent"); - return Response.status(Status.NO_CONTENT).build(); - } - } catch (ReasoningServiceException e) { - throw new WebApplicationException(e, - Response.Status.INTERNAL_SERVER_ERROR); - } - } - try { - OWLOntology output = manager.createOntology(); - if (getCurrentTask().equals("classify")) { - log.debug("Task is 'classify'"); - manager.addAxioms(output, s.classify(input)); - } else if (getCurrentTask().equals("enrich")) { - log.debug("Task is 'enrich'"); - manager.addAxioms(output, s.enrich(input)); - } - if (isHTML(headers)) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - manager.saveOntology(output, - new ManchesterOWLSyntaxOntologyFormat(), out); - return Response.ok( - new Viewable("result", - new ReasoningPrettyResultResource(context, - uriInfo, out)), TEXT_HTML).build(); - } else { - return Response.ok(output).build(); - } - } catch (ReasoningServiceException e) { - throw new WebApplicationException(e, - Response.Status.INTERNAL_SERVER_ERROR); - } catch (InconsistentInputException e) { - log.debug("The input is not consistent"); - return Response.status(Status.NO_CONTENT).build(); - } catch (OWLOntologyCreationException e) { - throw new WebApplicationException(e, - Response.Status.INTERNAL_SERVER_ERROR); - } catch (OWLOntologyStorageException e) { - throw new WebApplicationException(e, - Response.Status.INTERNAL_SERVER_ERROR); - } - } - throw new WebApplicationException(new Exception( - "Unsupported implementation"), - Response.Status.INTERNAL_SERVER_ERROR); - } - - public ReasoningService getCurrentService() { - return this.service; - } - - public String getCurrentTask() { - return this.taskID; - } - - public List<String> getSupportedTasks() { - return Arrays.asList(ReasoningServiceTaskResource.TASKS); - } - - private ReasoningService getService(String servicePath) - throws UnboundReasoningServiceException { - return getServicesManager().get(servicePath); - } - - private ReasoningServicesManager getServicesManager() { - log.debug("(getServicesManager()) "); - return (ReasoningServicesManager) ContextHelper.getServiceFromContext( - ReasoningServicesManager.class, this.context); - } - - public Set<ReasoningService> getActiveServices() { - log.debug("(getActiveServices()) There are {} reasoning services", - getServicesManager().size()); - return getServicesManager().asUnmodifiableSet(); - } + /** + * TODO: We may want to extend the possible tasks in the future, demanding the execution to some + * delegate... + */ + public static final String[] TASKS = {"enrich", "classify", "check"}; + + private ReasoningService service; + private String taskID; + + public ReasoningServiceTaskResource(@PathParam(value = "service") String serviceID, + @PathParam(value = "task") String taskID, + @Context ServletContext servletContext) { + super(); + this.context = servletContext; + // Retrieve the service + try { + service = getService(serviceID); + } catch (UnboundReasoningServiceException e) { + log.error("Service not found: {}", serviceID); + throw new WebApplicationException(e, Response.Status.NOT_FOUND); + } + // Check if the task is allowed + if (Arrays.asList(TASKS).contains(taskID)) { + this.taskID = taskID; + } else { + log.error("Unsupported task (not found): {}", taskID); + throw new WebApplicationException(new Exception("Unsupported task (not found): " + taskID), + Response.Status.BAD_REQUEST); + } + + // Now we check if the service implementation is supported + if (getCurrentService() instanceof JenaReasoningService) {} else if (getCurrentService() instanceof OWLApiReasoningService) {} else { + log.error("This implementation of ReasoningService is not supported: {}", getCurrentService() + .getClass()); + throw new WebApplicationException(new Exception( + "This implementation of ReasoningService is not supported: " + + getCurrentService().getClass()), Response.Status.INTERNAL_SERVER_ERROR); + } + } + + @POST + @Consumes({MULTIPART_FORM_DATA}) + @Produces({TEXT_HTML, KRFormat.RDF_XML, KRFormat.TURTLE, KRFormat.OWL_XML}) + public Response postData(@FormDataParam("file") File file) { + log.info("Called POST on service {} to perform task {}", service, taskID); + log.info("on input file: {}", file); + return Response.ok(new Viewable("index", this), TEXT_HTML).build(); + } + + private boolean isHTML(HttpHeaders headers) { + // We only want to state if HTML format is the preferred format + // requested + Set<String> htmlformats = new HashSet<String>(); + htmlformats.add(TEXT_HTML); + Set<String> rdfformats = new HashSet<String>(); + String[] formats = {TEXT_HTML, "text/plain", KRFormat.RDF_XML, KRFormat.TURTLE, "text/turtle", + "text/n3"}; + rdfformats.addAll(Arrays.asList(formats)); + List<MediaType> mediaTypes = headers.getAcceptableMediaTypes(); + for (MediaType t : mediaTypes) { + String strty = t.toString(); + log.info("Acceptable is {}", t); + if (htmlformats.contains(strty)) { + log.debug("Requested format is HTML {}", t); + return true; + } else if (rdfformats.contains(strty)) { + log.debug("Requested format is RDF {}", t); + return false; + } + } + // Default behavior? Should never happen! + return true; + } + + @GET + @Produces({TEXT_HTML, "text/plain", KRFormat.RDF_XML, KRFormat.TURTLE, "text/turtle", "text/n3"}) + public Response get(@QueryParam("url") String url, @Context HttpHeaders headers) { + + // If url param is missing, we produce the service welcome page + if (url == null) { + return Response.ok(new Viewable("index", this)).build(); + } + log.info("Called GET on service {} to perform task {}", service, taskID); + log.info("on input url: {}", url); + // + if (getCurrentService() instanceof JenaReasoningService) { + JenaReasoningService s = (JenaReasoningService) getCurrentService(); + + if (getCurrentTask().equals("check")) { + log.debug("Task is 'check'"); + boolean isConsistent; + isConsistent = s.isConsistent(ModelFactory.createDefaultModel().read(url)); + if (isConsistent) { + log.debug("The input is consistent"); + return Response.ok().build(); + } else { + log.debug("The input is not consistent"); + return Response.status(Status.NO_CONTENT).build(); + } + } + + Set<Statement> result = null; + if (getCurrentTask().equals("classify")) { + log.debug("Task is 'classify'"); + result = s.classify(ModelFactory.createDefaultModel().read(url)); + } else if (getCurrentTask().equals("enrich")) { + log.debug("Task is: 'enrich'"); + result = s.enrich(ModelFactory.createDefaultModel().read(url)); + } + if (result == null) { + log.error("Result is null"); + throw new WebApplicationException(); + } + log.info("Returning {} statements", result.size()); + Model outputModel = ModelFactory.createDefaultModel(); + outputModel.add(result.toArray(new Statement[result.size()])); + + if (isHTML(headers)) { + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + outputModel.write(out, "TURTLE"); + return Response.ok( + new Viewable("result", new ReasoningPrettyResultResource(context, uriInfo, out)), + TEXT_HTML).build(); + } else { + return Response.ok(outputModel).build(); + } + + } else if (getCurrentService() instanceof OWLApiReasoningService) { + OWLApiReasoningService s = (OWLApiReasoningService) getCurrentService(); + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + // Listening for missing imports + manager.addMissingImportListener(new MissingImportListener() { + @Override + public void importMissing(MissingImportEvent arg0) { + log.warn("Missing import: {}", arg0.getImportedOntologyURI()); + } + }); + OWLOntology input = null; + try { + input = manager.loadOntologyFromOntologyDocument(IRI.create(url)); + } catch (OWLOntologyCreationIOException e) { + throw new WebApplicationException(e, Response.Status.NOT_FOUND); + } catch (OWLOntologyCreationException e) { + throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR); + } + if (getCurrentTask().equals("check")) { + log.debug("Task is 'check'"); + boolean isConsistent; + + try { + isConsistent = s.isConsistent(input); + if (isConsistent) { + log.debug("The input is consistent"); + return Response.ok().build(); + } else { + log.debug("The input is not consistent"); + return Response.status(Status.NO_CONTENT).build(); + } + } catch (ReasoningServiceException e) { + throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR); + } + } + try { + OWLOntology output = manager.createOntology(); + if (getCurrentTask().equals("classify")) { + log.debug("Task is 'classify'"); + manager.addAxioms(output, s.classify(input)); + } else if (getCurrentTask().equals("enrich")) { + log.debug("Task is 'enrich'"); + manager.addAxioms(output, s.enrich(input)); + } + if (isHTML(headers)) { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + manager.saveOntology(output, new ManchesterOWLSyntaxOntologyFormat(), out); + return Response.ok( + new Viewable("result", new ReasoningPrettyResultResource(context, uriInfo, out)), + TEXT_HTML).build(); + } else { + return Response.ok(output).build(); + } + } catch (ReasoningServiceException e) { + throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR); + } catch (InconsistentInputException e) { + log.debug("The input is not consistent"); + return Response.status(Status.NO_CONTENT).build(); + } catch (OWLOntologyCreationException e) { + throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR); + } catch (OWLOntologyStorageException e) { + throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR); + } + } + throw new WebApplicationException(new Exception("Unsupported implementation"), + Response.Status.INTERNAL_SERVER_ERROR); + } + + public ReasoningService getCurrentService() { + return this.service; + } + + public String getCurrentTask() { + return this.taskID; + } + + public List<String> getSupportedTasks() { + return Arrays.asList(ReasoningServiceTaskResource.TASKS); + } + + private ReasoningService getService(String servicePath) throws UnboundReasoningServiceException { + return getServicesManager().get(servicePath); + } + + private ReasoningServicesManager getServicesManager() { + log.debug("(getServicesManager()) "); + return (ReasoningServicesManager) ContextHelper.getServiceFromContext(ReasoningServicesManager.class, + this.context); + } + + public Set<ReasoningService> getActiveServices() { + log.debug("(getActiveServices()) There are {} reasoning services", getServicesManager().size()); + return getServicesManager().asUnmodifiableSet(); + } }
Modified: incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServicesResource.java URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServicesResource.java?rev=1160643&r1=1160642&r2=1160643&view=diff ============================================================================== --- incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServicesResource.java (original) +++ incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServicesResource.java Tue Aug 23 12:02:24 2011 @@ -23,41 +23,39 @@ import com.sun.jersey.api.view.Viewable; @Path("/reasoners/services") public class ReasoningServicesResource extends BaseStanbolResource { - private Logger log = LoggerFactory.getLogger(getClass()); - private ServletContext context; - private UriInfo uriInfo; - - public ReasoningServicesResource(@Context ServletContext servletContext, @Context UriInfo uriInfo) { - super(); - this.context = servletContext; - this.uriInfo = uriInfo; - } - - public String getCurrentPath(){ - return uriInfo.getPath(); - } - - public String[] getTasks(){ - return ReasoningServiceTaskResource.TASKS; - } - - @GET - @Produces(TEXT_HTML) - public Response getDocumentation() { - return Response.ok(new Viewable("index", this), TEXT_HTML).build(); - } - - - private ReasoningServicesManager getServicesManager(){ - log.debug("(getServicesManager()) "); - return (ReasoningServicesManager) ContextHelper - .getServiceFromContext(ReasoningServicesManager.class, - this.context); - } - public Set<ReasoningService> getActiveServices() { - log.debug("(getActiveServices()) There are {} reasoning services", - getServicesManager().size()); - return getServicesManager().asUnmodifiableSet(); - } + private Logger log = LoggerFactory.getLogger(getClass()); + private ServletContext context; + private UriInfo uriInfo; + + public ReasoningServicesResource(@Context ServletContext servletContext, @Context UriInfo uriInfo) { + super(); + this.context = servletContext; + this.uriInfo = uriInfo; + } + + public String getCurrentPath() { + return uriInfo.getPath(); + } + + public String[] getTasks() { + return ReasoningServiceTaskResource.TASKS; + } + + @GET + @Produces(TEXT_HTML) + public Response getDocumentation() { + return Response.ok(new Viewable("index", this), TEXT_HTML).build(); + } + + private ReasoningServicesManager getServicesManager() { + log.debug("(getServicesManager()) "); + return (ReasoningServicesManager) ContextHelper.getServiceFromContext(ReasoningServicesManager.class, + this.context); + } + + public Set<ReasoningService> getActiveServices() { + log.debug("(getActiveServices()) There are {} reasoning services", getServicesManager().size()); + return getServicesManager().asUnmodifiableSet(); + } } Modified: incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/writers/JenaModelWriter.java URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/writers/JenaModelWriter.java?rev=1160643&r1=1160642&r2=1160643&view=diff ============================================================================== --- incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/writers/JenaModelWriter.java (original) +++ incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/writers/JenaModelWriter.java Tue Aug 23 12:02:24 2011 @@ -20,60 +20,64 @@ import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.RDFWriter; @Provider -@Produces({"application/rdf+xml","text/turtle","text/n3","text/plain","application/turtle"}) +@Produces({"application/rdf+xml", "text/turtle", "text/n3", "text/plain", "application/turtle"}) public class JenaModelWriter implements MessageBodyWriter<Model> { - private final Logger log = LoggerFactory.getLogger(getClass()); + private final Logger log = LoggerFactory.getLogger(getClass()); - @Override - public boolean isWriteable(Class<?> type, Type genericType, - Annotation[] annotations, MediaType mediaType) { - return Model.class.isAssignableFrom(type); - } - - private ByteArrayOutputStream stream = null; - - @Override - public long getSize(Model t, Class<?> type, Type genericType, - Annotation[] annotations, MediaType mediaType) { - log.debug("Called size of item"); - stream = toStream(t, mediaType.toString()); - log.error("Returning {} bytes",stream.size()); - return Integer.valueOf(stream.toByteArray().length).longValue(); - } - - public ByteArrayOutputStream toStream(Model t, String mediaType) { - log.info("Serializing model to {}. Statements are {}",mediaType, t.listStatements().toSet().size()); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - if (mediaType.equals("application/rdf+xml")) { - t.write(stream); - }else if (mediaType.equals("application/turtle")){ - //t.write(stream, "TURTLE"); - RDFWriter writer = t.getWriter("TURTLE"); - log.info("Writer for TURTLE: {}",writer); - writer.write(t, stream, null); - }else if (mediaType.equals("text/turtle")){ - t.write(stream, "TURTLE"); - }else if (mediaType.equals("text/plain")){ - t.write(stream, "TURTLE"); - }else if (mediaType.equals("text/n3")){ - t.write(stream, "N3"); - } - log.info("Written {} bytes to stream",stream.toByteArray().length); - return stream; - } - - @Override - public void writeTo(Model t, Class<?> type, Type genericType, - Annotation[] annotations, MediaType mediaType, - MultivaluedMap<String, Object> httpHeaders, - OutputStream entityStream) throws IOException, - WebApplicationException { - if (stream == null) { - toStream(t, mediaType.toString()).writeTo(entityStream); - } else { - stream.writeTo(entityStream); - stream = null; - } - } + @Override + public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { + return Model.class.isAssignableFrom(type); + } + + private ByteArrayOutputStream stream = null; + + @Override + public long getSize(Model t, + Class<?> type, + Type genericType, + Annotation[] annotations, + MediaType mediaType) { + log.debug("Called size of item"); + stream = toStream(t, mediaType.toString()); + log.error("Returning {} bytes", stream.size()); + return Integer.valueOf(stream.toByteArray().length).longValue(); + } + + public ByteArrayOutputStream toStream(Model t, String mediaType) { + log.info("Serializing model to {}. Statements are {}", mediaType, t.listStatements().toSet().size()); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + if (mediaType.equals("application/rdf+xml")) { + t.write(stream); + } else if (mediaType.equals("application/turtle")) { + // t.write(stream, "TURTLE"); + RDFWriter writer = t.getWriter("TURTLE"); + log.info("Writer for TURTLE: {}", writer); + writer.write(t, stream, null); + } else if (mediaType.equals("text/turtle")) { + t.write(stream, "TURTLE"); + } else if (mediaType.equals("text/plain")) { + t.write(stream, "TURTLE"); + } else if (mediaType.equals("text/n3")) { + t.write(stream, "N3"); + } + log.info("Written {} bytes to stream", stream.toByteArray().length); + return stream; + } + + @Override + public void writeTo(Model t, + Class<?> type, + Type genericType, + Annotation[] annotations, + MediaType mediaType, + MultivaluedMap<String,Object> httpHeaders, + OutputStream entityStream) throws IOException, WebApplicationException { + if (stream == null) { + toStream(t, mediaType.toString()).writeTo(entityStream); + } else { + stream.writeTo(entityStream); + stream = null; + } + } }
