@Override public ResultCursor<String> call() throws Exception { //((SchemaRepositoryImpl) repo).getXQProcessor(clientId); checkPermission(Permission.Value.read); return queryMgr.getDocumentUris(query, params, context); }
@POST @Path("/uris") @ApiOperation(value = "getURIs: return URIs of Documents conforming to the specified XQuery") public Response getURIs(final QueryParams params) { logger.debug("getURIs; got query: {}", params); QueryManagement queryMgr = getQueryManager(); try { ResultCursor<String> cursor = queryMgr.getDocumentUris(params.query, params.params, params.props); Collection<String> uris = new ArrayList<>(); for (String uri: cursor) { uris.add(uri); } logger.trace("getURIs; returning URIs: {}", uris); return Response.ok(uris).build(); } catch (Exception ex) { logger.error("getURIs.error", ex); throw new WebApplicationException(ex, Status.INTERNAL_SERVER_ERROR); //return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ex.getMessage()).build(); } }
@Override public Sequence call(XPathContext context, Sequence[] arguments) throws XPathException { String query = arguments[0].head().getStringValue(); MapItem item = (MapItem) arguments[1].head(); Map<String, Object> params = itemToMap(item); Properties props = null; if (arguments.length > 2) { props = sequence2Properties(arguments[2]); } try { ResultCursor<String> uris = qm.getDocumentUris(query, params, props); ArrayList<AtomicValue> list = new ArrayList<>(); //uris.size()); for (String uri: uris) { list.add(new StringValue(uri)); } return new AtomicArray(list); } catch (BagriException ex) { throw new XPathException(ex); } }