Extending Header to support Sesame OpenRDF

hanymorcos's picture
Good Morning, I'm trying to link up the Mashup Server to Sesame RDF Framework. Sesame uses REST webservices. One simple example is to list all repositories. The response adds an additional parameter to the header called accept and passes application/sparql-results+xml, */*. I'm unable to do that so far. WSrequest is not letting me modify the header. I don't think I can use the scrapper class because the result is not in html. Any ideas? The output needed from mashup to send to sesame. >> GET /sesame/repositories HTTP/1.1 Host: localhost Accept: application/sparql-results+xml, */* << Response: HTTP/1.1 200 OK Content-Type: application/sparql-results+xml <?xml version='1.0' encoding='UTF-8'?> http://localhost/sesame/repositories/mem-rdf mem-rdf Main Memory RDF repository true false
hanymorcos's picture

I found http-param and

I found http-param and http-header clauses. That I added. I seen in the server log that a set of RDF data was downloaded. But I still get failures. I'm using the scraper. toString.documentation = "TODO: Add operation level documentation here" ; toString.inputTypes = { /* TODO: Add input types of this operation */ }; toString.outputType = "String"; /* TODO: Add output type here */ function toString() {var config = application/sparql-results+xml, */*;q=0.5 ; var scraper = new Scraper(config); var result = scraper.response; return result; } I'm getting a failure that I don't understand. [2009-10-12 13:56:54,984] WARN - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended. [2009-10-12 13:56:54,984] WARN - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended. [2009-10-12 13:56:54,984] INFO - Downloaded: http://localhost:8080/sesame/repositories, mime type = application/x-binary-rdf-results-table, length = 264B. [2009-10-12 13:56:54,984] INFO - HttpProcessor processor executed in 0ms. [2009-10-12 13:56:54,984] INFO - HttpParamProcessor starts processing... [2009-10-12 13:56:54,984] INFO - ConstantProcessor starts processing... [2009-10-12 13:56:54,984] INFO - ConstantProcessor processor executed in 0ms. [2009-10-12 13:56:54,984] ERROR - [2009-10-12 13:56:54,984] ERROR - [2009-10-12 14:11:18,006] INFO - HttpProcessor processor executed in 0ms. [2009-10-12 14:11:18,006] INFO - HttpHeaderProcessor starts processing... [2009-10-12 14:11:18,006] INFO - ConstantProcessor starts processing.. . [2009-10-12 14:11:18,006] INFO - ConstantProcessor processor executed in 0ms. [2009-10-12 14:11:18,006] ERROR - stack trace: org.apache.axis2.AxisFault at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at org.wso2.carbon.javascript.messagereceiver.JavaScriptEngine.call(Java ScriptEngine.java:182) at org.wso2.carbon.javascript.messagereceiver.JavaScriptEngine.call(Java ScriptEngine.java:210) at org.wso2.carbon.javascript.messagereceiver.JavaScriptReceiver.invokeB usinessLogic(JavaScriptReceiver.java:189) at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusines sLogic(AbstractInOutMessageReceiver.java:40) at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMe ssageReceiver.java:114) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:178) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostReq uest(HTTPTransportUtils.java:167) at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:1 42) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl. doFilter(FilterServletAdaptor.java:56) at org.wso2.carbon.jsservices.custom.ui.CustomUIServletFilter.doFilter(C ustomUIServletFilter.java:166) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterSe rvletAdaptor.java:37) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleR equest(ServletRegistration.java:90) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(P roxyServlet.java:111) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyS ervlet.java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.wso2.carbon.bridge.BridgeServlet.service(BridgeServlet.java:135) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV alve.java:210) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV alve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j ava:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j ava:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal ve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav a:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java :870) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p rocessConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo int.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol lowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP ool.java:685) at java.lang.Thread.run(Thread.java:595) Caused by: java.util.NoSuchElementException at java.util.LinkedList.getLast(LinkedList.java:122) at org.webharvest.utils.Stack.peek(Unknown Source) at org.webharvest.runtime.Scraper.getRunningHttpProcessor(Unknown Source ) at org.webharvest.runtime.processors.HttpHeaderProcessor.execute(Unknown Source) at org.webharvest.runtime.processors.BaseProcessor.run(Unknown Source) at org.webharvest.runtime.processors.BodyProcessor.execute(Unknown Sourc e) at org.webharvest.runtime.processors.VarDefProcessor.execute(Unknown Sou rce) at org.webharvest.runtime.processors.BaseProcessor.run(Unknown Source) at org.webharvest.runtime.Scraper.execute(Unknown Source) at org.webharvest.runtime.Scraper.execute(Unknown Source) at org.wso2.carbon.javascript.hostobjects.scraper.ScraperHostObject.scra pe(ScraperHostObject.java:97) at org.wso2.carbon.javascript.hostobjects.scraper.ScraperHostObject.jsCo nstructor(ScraperHostObject.java:74) at sun.reflect.GeneratedMethodAccessor108.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155) at org.mozilla.javascript.FunctionObject.call(FunctionObject.java:417) at org.mozilla.javascript.BaseFunction.construct(BaseFunction.java:313) at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:213 2) at org.mozilla.javascript.gen.c192._c1(sesame:72) at org.mozilla.javascript.gen.c192.call(sesame) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:3 93) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:283 4) at org.mozilla.javascript.gen.c192.call(sesame) at org.wso2.carbon.javascript.messagereceiver.JavaScriptEngine.call(Java ScriptEngine.java:180)
hanymorcos's picture

It's working

I didn't open and and close the xml notation for HTTP block correctly; therefore, the accept parameter wasn't being set properly. It's working. this.serviceName = "sesame"; this.documentation = "TODO: Add service level documentation here" ; toString.documentation = "TODO: Add operation level documentation here" ; toString.inputTypes = { /* TODO: Add input types of this operation */ }; toString.outputType = "String"; /* TODO: Add output type here */ function toString() { var config = application/sparql-results+xml ; var scraper = new Scraper(config); var result = scraper.response; return result;}
jonathan.wso2.com's picture

Glad we could help

;-).
tyrell's picture

Thanks for posting the

Thanks for posting the workaround you found :)