/** {@inheritDoc} */ public void bindValue(String varName, Value value) throws RepositoryException, RemoteException { query.bindValue(varName, value); }
@Override public void bindValue(String varName, Value value) throws IllegalArgumentException, RepositoryException { delegate.bindValue(varName, value); }
/** * Binds the given <code>value</code> to the variable named * <code>var</code>. * * @param q the query * @param var name of variable in query * @param value value to bind * @throws IllegalArgumentException if <code>var</code> is not a valid * variable in this query. * @throws RepositoryException if an error occurs. */ protected void bindVariableValue(Query q, String var, Value value) throws RepositoryException { q.bindValue(var, value); }
Session session = ... String expression = "SELECT * FROM ..."; // as above String pluginId = ... String platform = ... String version = ... QueryManager queryMgr = session.getWorkspace().getQueryManager(); Query query = queryMgr.createQuery(expression,Query.JCR_SQL2); query.bindValue("pluginId",pluginId); query.bindValue("platform",platform); query.bindValue("version",version); QueryResult result = query.execute();
public void bindValue(String varName, Value value) throws IllegalArgumentException, RepositoryException { if (query.getStatement().contains(MAGIC_NAMED_START)) { if(arguments == null) arguments = new HashMap<String, Value>(); arguments.put(varName, value); } else { query.bindValue(varName, value); } }
public void execute() throws Exception { getDelegate().bindValue(varName, value); } });
public void bindValue(String varName, Value value) throws IllegalArgumentException, RepositoryException { getDelegate().bindValue(varName, value); }
private void bindValue(final Query query, final ValueFactory valueFactory, final String name, final Object value) throws RepositoryException { if (value instanceof String) { query.bindValue(name, valueFactory.createValue((String) value)); } else { throw new RepositoryAccessException(MessageFormat.format(UNSUPPORTED_PARAMETER_TYPE, name, value.getClass().getSimpleName())); } }
private void bindExtraVariables( UriInfo uriInfo, ValueFactory valueFactory, Query query ) throws RepositoryException { if (uriInfo == null) { return; } // Extract the query parameters and bind as variables ... for (Map.Entry<String, List<String>> entry : uriInfo.getQueryParameters().entrySet()) { String variableName = entry.getKey(); List<String> variableValues = entry.getValue(); if (variableValues == null || variableValues.isEmpty() || SKIP_QUERY_PARAMETERS.contains(variableName)) { continue; } // Grab the first non-null value ... Iterator<String> valuesIterator = variableValues.iterator(); String variableValue = null; while (valuesIterator.hasNext() && variableValue == null) { variableValue = valuesIterator.next(); } if (variableValue == null) { continue; } // Bind the variable value to the variable name ... query.bindValue(variableName, valueFactory.createValue(variableValue)); } } }
public static QueryResult query(Session session, String queryExpression, Map<String, String> bindParams) throws RepositoryException { QueryResult results = null; log.debug("JCR-SQL2 query: {} ",queryExpression); Query query = session.getWorkspace().getQueryManager().createQuery(queryExpression, "JCR-SQL2"); if (bindParams != null && !bindParams.isEmpty()) { Iterator e = bindParams.entrySet().iterator(); while (e.hasNext()) { Map.Entry entry = (Map.Entry) e.next(); String key = (String) entry.getKey(); Value value = session.getValueFactory().createValue((String) entry.getValue()); query.bindValue(key, value); } } results = query.execute(); return results; }
@Override protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); String queryText = request.getParameter("q"); if ( queryText == null || queryText.isEmpty() ) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.getWriter().write("Missing mandatory 'q' parameter"); return; } Session session = request.getResourceResolver().adaptTo(Session.class); try { Query query = session.getWorkspace().getQueryManager().createQuery("SELECT * FROM [nt:base] AS s WHERE CONTAINS(s.*, $queryText)", Query.JCR_SQL2); query.bindValue("queryText", session.getValueFactory().createValue(queryText)); QueryResult result = query.execute(); NodeIterator iterator = result.getNodes(); while( iterator.hasNext() ) { response.getWriter().println(iterator.nextNode().getPath()); } } catch (RepositoryException e) { throw new ServletException(e); } }
private boolean performQuery(@NotNull final TestContext ec) throws RepositoryException { QueryManager qm = ec.session.getWorkspace().getQueryManager(); ValueFactory vf = ec.session.getValueFactory(); Query q = qm.createQuery("SELECT * FROM [nt:base] WHERE [title] = $title", Query.JCR_SQL2); q.bindValue("title", vf.createValue(ec.title)); LOG.trace("statement: {} - title: {}", q.getStatement(), ec.title); RowIterator rows = q.execute().getRows(); if (rows.hasNext()) { rows.nextRow().getPath(); return true; } else { return false; } }
private void run0() throws RepositoryException { session.refresh(false); QueryManager qm = session.getWorkspace().getQueryManager(); Query q = qm.createQuery("select * from [nt:base] where [" + indexedPropName + "] = $status " + "option(index tag fooIndex)", Query.JCR_SQL2); q.bindValue("status", session.getValueFactory().createValue(randomStatus())); QueryResult result = q.execute(); //With property index at time traversing index wins (somehow reporting lower cost) //and that leads to warning. So limit the iterator size resultSize += Iterators.size(Iterators.limit(result.getNodes(), 500)); } }
/** * {@inheritDoc} */ public QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map<String, String> namespaces, long limit, long offset, Map<String, QValue> values) throws RepositoryException { SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo); Query query = createQuery(sInfo.getSession(), statement, language, namespaces); if (limit != -1) { query.setLimit(limit); } if (offset != -1) { query.setOffset(offset); } if (values != null && !values.isEmpty()) { for (Map.Entry<String, QValue> entry : values.entrySet()) { Value value = ValueFormat.getJCRValue(entry.getValue(), sInfo.getNamePathResolver(), sInfo.getSession().getValueFactory()); query.bindValue(entry.getKey(), value); } } return new QueryInfoImpl(query.execute(), idFactory, sInfo.getNamePathResolver(), getQValueFactory()); }
/** * {@inheritDoc} */ public QueryInfo executeQuery(SessionInfo sessionInfo, String statement, String language, Map<String, String> namespaces, long limit, long offset, Map<String, QValue> values) throws RepositoryException { SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo); Query query = createQuery(sInfo.getSession(), statement, language, namespaces); if (limit != -1) { query.setLimit(limit); } if (offset != -1) { query.setOffset(offset); } if (values != null && !values.isEmpty()) { for (Map.Entry<String, QValue> entry : values.entrySet()) { Value value = ValueFormat.getJCRValue(entry.getValue(), sInfo.getNamePathResolver(), sInfo.getSession().getValueFactory()); query.bindValue(entry.getKey(), value); } } return new QueryInfoImpl(query.execute(), idFactory, sInfo.getNamePathResolver(), getQValueFactory()); }
@Override public List<ArtifactMetadata> getArtifactsByChecksum( String repositoryId, String checksum ) throws MetadataRepositoryException { List<ArtifactMetadata> artifacts; String q = getArtifactQuery( repositoryId ) + " AND ([sha1] = $checksum OR [md5] = $checksum)"; try { Query query = getJcrSession().getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 ); ValueFactory valueFactory = getJcrSession().getValueFactory(); query.bindValue( "checksum", valueFactory.createValue( checksum ) ); QueryResult result = query.execute(); artifacts = new ArrayList<>(); for ( Node n : JcrUtils.getNodes( result ) ) { artifacts.add( getArtifactFromNode( repositoryId, n ) ); } } catch ( RepositoryException e ) { throw new MetadataRepositoryException( e.getMessage(), e ); } return artifacts; }
private static List<String> queryResult(Session session, String indexedPropName, String value) throws RepositoryException{ session.refresh(false); QueryManager qm = session.getWorkspace().getQueryManager(); Query q = qm.createQuery("select * from [nt:base] where [" + indexedPropName + "] = $value", Query.JCR_SQL2); q.bindValue("value", session.getValueFactory().createValue(value)); QueryResult result = q.execute(); List<String> paths = Lists.newArrayList(); for (Row r : JcrUtils.getRows(result)){ paths.add(r.getPath()); } return paths; } }
public void testFulltextBindVariableSQL() throws Exception { Node foo = testRootNode.addNode("foo"); foo.setProperty("mytext", new String[]{"the quick brown fox jumps over the lazy dog."}); testRootNode.save(); String sql = "SELECT * FROM [nt:unstructured]" + " WHERE ISCHILDNODE([" + testRoot + "])" + " AND CONTAINS(mytext, $searchExpression)"; Query q = superuser.getWorkspace().getQueryManager().createQuery(sql, Query.JCR_SQL2); assertEquals("Expected exactly 1 bind variable", 1, q.getBindVariableNames().length); assertEquals("searchExpression", q.getBindVariableNames()[0]); q.bindValue("searchExpression", superuser.getValueFactory().createValue("fox")); QueryResult result = q.execute(); checkResult(result, 1); }
@Test public void noLiterals() throws RepositoryException { Session session = getAdminSession(); ValueFactory vf = session.getValueFactory(); QueryManager qm = session.getWorkspace().getQueryManager(); // insecure try { Query q = qm.createQuery( "select text from [nt:base] where password = 'x'", Query.JCR_SQL2 + "-noLiterals"); q.execute(); fail(); } catch (InvalidQueryException e) { assertTrue(e.toString(), e.toString().indexOf( "literals of this type not allowed") > 0); } // secure Query q = qm.createQuery( "select text from [nt:base] where password = $p", Query.JCR_SQL2 + "-noLiterals"); q.bindValue("p", vf.createValue("x")); q.execute(); }
@FixFor( "MODE-1840" ) @Test public void shouldBeAbleToCreateAndExecuteJcrSql2QueryWithBindVariableInsideContains() throws RepositoryException { String sql = "select [jcr:path] from [nt:unstructured] as n where contains(n.something, $expression)"; Query query = session.getWorkspace().getQueryManager().createQuery(sql, Query.JCR_SQL2); query.bindValue("expression", session.getValueFactory().createValue("cat wearing")); QueryResult result = query.execute(); validateQuery().rowCount(1).hasColumns("jcr:path").hasNodesAtPaths("/Other/NodeA[2]").validate(query, result); }