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()));
}
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()]);
}
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);
}
}
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();
}
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;
}
Aggregations