Skip to content

Commit

Permalink
refactor: improve error handler from RDF4J request
Browse files Browse the repository at this point in the history
  • Loading branch information
ofilangi committed May 17, 2022
1 parent e820fa8 commit a0dd5ce
Showing 1 changed file with 18 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package fr.inrae.metabohub.semantic_web.driver
import fr.inrae.metabohub.semantic_web.exception._
import fr.inrae.metabohub.semantic_web.event.{DiscoveryRequestEvent, DiscoveryStateRequestEvent}
import fr.inrae.metabohub.semantic_web.sparql.QueryResult
import org.eclipse.rdf4j.query.{MalformedQueryException, UnsupportedQueryLanguageException}
import org.eclipse.rdf4j.query.resultio.sparqljson.SPARQLResultsJSONWriter
import org.eclipse.rdf4j.repository.RepositoryConnection
import org.eclipse.rdf4j.repository.{RepositoryConnection, RepositoryException}

import java.io.ByteArrayOutputStream
import scala.concurrent.Future
Expand All @@ -18,26 +19,31 @@ trait Rdf4jRequestDriver extends RequestDriver {
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.START_HTTP_REQUEST))
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.PROCESS_HTTP_REQUEST))
val out = new ByteArrayOutputStream()
/*
val result = repo.getConnection()
.prepareTupleQuery(query).evaluate()
while (result.hasNext()) println(result.next())
*/

Try(con
.prepareTupleQuery(query)
.evaluate(new SPARQLResultsJSONWriter(out))) match {
case Success(_) => {
case Success(_) =>
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.FINISHED_HTTP_REQUEST))
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.RESULTS_BUILD))
val response = fr.inrae.metabohub.semantic_web.sparql.QueryResult(out.toString())
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.RESULTS_DONE))
response
}
case Failure(e) => {
case Failure(e : MalformedQueryException) =>
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.ERROR_HTTP_REQUEST))
throw SWDiscoveryException(s"** MalformedQueryException **\n"+query+"\n"+e.getMessage)
case Failure(e : UnsupportedQueryLanguageException) =>
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.ERROR_HTTP_REQUEST))
throw SWDiscoveryException(s"** UnsupportedQueryLanguageException **\n"+e.getMessage)
case Failure(e : UnsupportedOperationException) =>
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.ERROR_HTTP_REQUEST))
throw SWDiscoveryException(s"** UnsupportedOperationException **"+"\n"+e.getMessage)
case Failure(e : RepositoryException) =>
publish(DiscoveryRequestEvent(DiscoveryStateRequestEvent.ERROR_HTTP_REQUEST))
throw SWDiscoveryException("\n"+query+"\n"+e.getMessage)
}
}
throw SWDiscoveryException(s"** RepositoryException **\ncon:$con"+"\n"+e.getMessage)
case Failure(e) =>
throw SWDiscoveryException(s"** Unknown error **"+"\n"+e.getMessage)
}
}
}
}

0 comments on commit a0dd5ce

Please sign in to comment.