Search in sources :

Example 6 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class ContentRemoteResultsTest method testGetColumns.

@Test
public void testGetColumns() {
    String[] columns = { "a", "b" };
    Result result = mock(Result.class);
    doReturn(columns).when(result).getColumnNames();
    assertTrue(elementsEqual(asList(columns), createContentRemoteResults(result).getColumns()));
}
Also used : Result(org.apache.jackrabbit.oak.api.Result) Test(org.junit.Test)

Example 7 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class AccessControlManagerImpl method getEffectivePolicies.

@Nonnull
@Override
public AccessControlPolicy[] getEffectivePolicies(@Nonnull Set<Principal> principals) throws RepositoryException {
    Util.checkValidPrincipals(principals, principalManager);
    Root r = getLatestRoot();
    Result aceResult = searchAces(principals, r);
    Set<JackrabbitAccessControlList> effective = Sets.newTreeSet(new Comparator<JackrabbitAccessControlList>() {

        @Override
        public int compare(JackrabbitAccessControlList list1, JackrabbitAccessControlList list2) {
            if (list1.equals(list2)) {
                return 0;
            } else {
                String p1 = list1.getPath();
                String p2 = list2.getPath();
                if (p1 == null) {
                    return -1;
                } else if (p2 == null) {
                    return 1;
                } else {
                    int depth1 = PathUtils.getDepth(p1);
                    int depth2 = PathUtils.getDepth(p2);
                    return (depth1 == depth2) ? p1.compareTo(p2) : Ints.compare(depth1, depth2);
                }
            }
        }
    });
    Set<String> paths = Sets.newHashSet();
    for (ResultRow row : aceResult.getRows()) {
        String acePath = row.getPath();
        String aclName = Text.getName(Text.getRelativeParent(acePath, 1));
        Tree accessControlledTree = r.getTree(Text.getRelativeParent(acePath, 2));
        if (aclName.isEmpty() || !accessControlledTree.exists()) {
            log.debug("Isolated access control entry -> ignore query result at " + acePath);
            continue;
        }
        String path = (REP_REPO_POLICY.equals(aclName)) ? null : accessControlledTree.getPath();
        if (paths.contains(path)) {
            continue;
        }
        JackrabbitAccessControlList policy = createACL(path, accessControlledTree, true, new AcePredicate(principals));
        if (policy != null) {
            effective.add(policy);
            paths.add(path);
        }
    }
    return effective.toArray(new AccessControlPolicy[effective.size()]);
}
Also used : ResultRow(org.apache.jackrabbit.oak.api.ResultRow) Root(org.apache.jackrabbit.oak.api.Root) Tree(org.apache.jackrabbit.oak.api.Tree) JackrabbitAccessControlList(org.apache.jackrabbit.api.security.JackrabbitAccessControlList) Result(org.apache.jackrabbit.oak.api.Result) Nonnull(javax.annotation.Nonnull)

Example 8 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class AccessControlManagerImpl method createPrincipalACL.

@Nullable
private JackrabbitAccessControlList createPrincipalACL(@Nullable String oakPath, @Nonnull Principal principal) throws RepositoryException {
    Root root = getRoot();
    Result aceResult = searchAces(Collections.<Principal>singleton(principal), root);
    RestrictionProvider restrProvider = new PrincipalRestrictionProvider(restrictionProvider);
    List<ACE> entries = new ArrayList<ACE>();
    for (ResultRow row : aceResult.getRows()) {
        Tree aceTree = root.getTree(row.getPath());
        if (Util.isACE(aceTree, ntMgr)) {
            String aclPath = Text.getRelativeParent(aceTree.getPath(), 1);
            String path;
            if (aclPath.endsWith(REP_REPO_POLICY)) {
                path = null;
            } else {
                path = Text.getRelativeParent(aclPath, 1);
            }
            entries.add(createACE(path, aceTree, restrProvider));
        }
    }
    if (entries.isEmpty()) {
        // nothing found
        return null;
    } else {
        return new PrincipalACL(oakPath, principal, entries, restrProvider);
    }
}
Also used : ResultRow(org.apache.jackrabbit.oak.api.ResultRow) ACE(org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.ACE) Root(org.apache.jackrabbit.oak.api.Root) PrincipalRestrictionProvider(org.apache.jackrabbit.oak.security.authorization.restriction.PrincipalRestrictionProvider) PrincipalRestrictionProvider(org.apache.jackrabbit.oak.security.authorization.restriction.PrincipalRestrictionProvider) RestrictionProvider(org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider) ArrayList(java.util.ArrayList) Tree(org.apache.jackrabbit.oak.api.Tree) Result(org.apache.jackrabbit.oak.api.Result) Nullable(javax.annotation.Nullable)

Example 9 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class NodeCounterIndexTest method executeXPathQuery.

protected String executeXPathQuery(String statement) throws ParseException {
    Result result = qe.executeQuery(statement, "xpath", null, NO_MAPPINGS);
    StringBuilder buff = new StringBuilder();
    for (ResultRow row : result.getRows()) {
        for (PropertyValue v : row.getValues()) {
            buff.append(v);
        }
    }
    return buff.toString();
}
Also used : ResultRow(org.apache.jackrabbit.oak.api.ResultRow) PropertyValue(org.apache.jackrabbit.oak.api.PropertyValue) Result(org.apache.jackrabbit.oak.api.Result)

Example 10 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class FunctionIndexTest method explainXpath.

protected String explainXpath(String query) throws ParseException {
    String explain = "explain " + query;
    Result result = executeQuery(explain, "xpath", NO_BINDINGS);
    ResultRow row = Iterables.getOnlyElement(result.getRows());
    String plan = row.getValue("plan").getValue(Type.STRING);
    return plan;
}
Also used : ResultRow(org.apache.jackrabbit.oak.api.ResultRow) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Result(org.apache.jackrabbit.oak.api.Result)

Aggregations

Result (org.apache.jackrabbit.oak.api.Result)36 ResultRow (org.apache.jackrabbit.oak.api.ResultRow)23 Test (org.junit.Test)20 PropertyValue (org.apache.jackrabbit.oak.api.PropertyValue)15 Tree (org.apache.jackrabbit.oak.api.Tree)15 AbstractQueryTest (org.apache.jackrabbit.oak.query.AbstractQueryTest)13 ParseException (java.text.ParseException)10 Root (org.apache.jackrabbit.oak.api.Root)5 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)5 Nonnull (javax.annotation.Nonnull)4 ExtractionResult (org.apache.jackrabbit.oak.plugins.index.fulltext.ExtractedText.ExtractionResult)3 ArrayList (java.util.ArrayList)2 ContentSession (org.apache.jackrabbit.oak.api.ContentSession)2 QueryEngine (org.apache.jackrabbit.oak.api.QueryEngine)2 Lists.newArrayList (com.google.common.collect.Lists.newArrayList)1 Sets.newHashSet (com.google.common.collect.Sets.newHashSet)1 Closer (com.google.common.io.Closer)1 IOException (java.io.IOException)1 Principal (java.security.Principal)1 Collections (java.util.Collections)1