JIRA is super-slow for me, but I managed to create this (suggested patch attached): https://issues.apache.org/jira/browse/JENA-405
Martynas On Tue, Feb 26, 2013 at 5:46 PM, Andy Seaborne <[email protected]> wrote: >> The code I tried on ARQ 2.9.2 (endpoint and credentials are bogus): > > IIRC things have moved on since then. How do things stand relative to Jena > 2.10.0? > > > On 26/02/13 13:45, Martynas Jusevičius wrote: >> >> I extended QueryEngineHTTP to achieve what I had described: >> >> https://raw.github.com/Graphity/graphity-ldp/rf-input-mode/src/main/java/org/graphity/ldp/query/QueryEngineHTTP.java >> > > This is GPL3 licensed which is a blocker to incorporating your suggestion. > If Jena 2.10.0 does not do what you want, please could you open a JIRA and > attach a suitably licensed version? > > Thanks > Andy > > >> I think endpoint (authentication) config is useful in a broader scope >> than SERVICE only. >> >> Martynas >> >> On Tue, Feb 26, 2013 at 1:49 PM, Martynas Jusevičius >> <[email protected]> wrote: >>> >>> Hey, >>> >>> I'm running SPARQL queries on endpoints with HTTP Basic >>> authentication, and am looking for a convenient way to manage and >>> configure the credentials. >>> >>> Currently I've implemented a simple registry that checks endpoint URIs >>> against a map and sets the credentials using >>> QueryEngineHTTP.setBasicAuthentication(). >>> >>> Recently however I came across query Context configuration: >>> http://jena.apache.org/documentation/query/service.html >>> >>> That seemed exactly what I needed, but there is a problem: it doesn't >>> seem to work with basic QueryEngineHTTP? Am I right to assume that >>> srv:serviceContext only works with explicit SERVICE endpoints? >>> >>> Any reason why the approaches cannot be unified and >>> QueryEngineHTTP.setBasicAuthentication() would use the Context? It is >>> executing the query against some service after all (even if it's not >>> explicit SERVICE). What class(es) would I need to extend to achieve >>> this? >>> >>> The code I tried on ARQ 2.9.2 (endpoint and credentials are bogus): >>> >>> Context sparqlContext = new Context(); >>> >>> sparqlContext.put(ARQConstants.allocSymbol("http://jena.hpl.hp.com/Service#", >>> "queryAuthUser"), "xxxxx"); >>> >>> sparqlContext.put(ARQConstants.allocSymbol("http://jena.hpl.hp.com/Service#", >>> "queryAuthPwd"), "yyyy"); >>> Map<String,Context> serviceContext = new HashMap<String,Context>(); >>> serviceContext.put("http://dydra.com/graphity/repository/sparql", >>> sparqlContext); >>> >>> ARQ.getContext().put(ARQConstants.allocSymbol("http://jena.hpl.hp.com/Service#", >>> "serviceContext"), serviceContext); >>> ... >>> QueryEngineHTTP request = >>> QueryExecutionFactory.createServiceRequest(endpointURI, query); >>> if (log.isDebugEnabled()) log.debug("SPARQL Context: {} ", >>> request.getContext()); >>> request.execConstruct(); >>> >>> I see the credentials in the debug output: >>> >>> symbol:http://jena.hpl.hp.com/Service#serviceContext = >>> >>> {http://dydra.com/graphity/repository/sparql=symbol:http://jena.hpl.hp.com/Service#queryAuthPwd >>> = yyyy >>> symbol:http://jena.hpl.hp.com/Service#queryAuthUser = xxxxx} >>> >>> but the serviceContext doesn't seem to have effect since I'm getting >>> >>> 13:21:54,149 TRACE HttpQuery:242 - Exception in exec >>> HttpException: 401 Unauthorized >>> You need to sign in or sign up before continuing. >>> at >>> com.hp.hpl.jena.sparql.engine.http.HttpQuery.execCommon(HttpQuery.java:431) >>> >>> where QueryEngineHTTP.setBasicAuthentication() used to work fine. Am I >>> doing it wrong? >>> >>> Help appreciated :) >>> >>> Martynas >>> graphity.org > >
