Search in sources :

Example 1 with SearchTargets

use of com.enonic.xp.node.SearchTargets in project xp by enonic.

the class FindNodesByMultiRepoQueryCommand method execute.

public FindNodesByMultiRepoQueryResult execute() {
    final SearchTargets searchTargets = query.getSearchTargets();
    final MultiRepoSearchSource.Builder searchSourceBuilder = MultiRepoSearchSource.create();
    for (final SearchTarget searchTarget : searchTargets) {
        searchSourceBuilder.add(SingleRepoSearchSource.create().branch(searchTarget.getBranch()).repositoryId(searchTarget.getRepositoryId()).acl(searchTarget.getPrincipalKeys()).build());
    }
    final SearchResult result = nodeSearchService.query(this.query.getNodeQuery(), searchSourceBuilder.build());
    return FindNodesByMultiRepoQueryResultFactory.create(result);
}
Also used : SearchTarget(com.enonic.xp.node.SearchTarget) MultiRepoSearchSource(com.enonic.xp.repo.impl.MultiRepoSearchSource) SearchResult(com.enonic.xp.repo.impl.search.result.SearchResult) SearchTargets(com.enonic.xp.node.SearchTargets)

Example 2 with SearchTargets

use of com.enonic.xp.node.SearchTargets in project xp by enonic.

the class FindNodesByMultiRepoQueryCommandTest method multi_repo_search_different_branches.

@Test
public void multi_repo_search_different_branches() throws Exception {
    final Repository repo1 = createRepo(REPO_USER_1, "repo1");
    final Repository repo2 = createRepo(REPO_USER_2, "repo2");
    // Create new branch in repo1
    final Branch otherBranch = callInContext(REPO_USER_1, repo1.getId(), MASTER_BRANCH, () -> createBranch("otherBranch"));
    final Node repo1MasterNode1 = callInContext(REPO_USER_1, repo1.getId(), MASTER_BRANCH, () -> createNode(NodePath.ROOT, "repo1Node"));
    final Node repo1OtherNode1 = callInContext(REPO_USER_1, repo1.getId(), otherBranch, () -> createNode(NodePath.ROOT, "repo1Node"));
    final Node repo2MasterNode1 = callInContext(REPO_USER_2, repo2.getId(), MASTER_BRANCH, () -> createNode(NodePath.ROOT, "repo2Node"));
    final SearchTargets targets = SearchTargets.create().add(createTarget(otherBranch, REPO_USER_1, repo1.getId())).add(createTarget(MASTER_BRANCH, REPO_USER_2, repo2.getId())).build();
    final NodeQuery query = NodeQuery.create().parent(NodePath.ROOT).build();
    final FindNodesByMultiRepoQueryResult result = doQuery(query, targets);
    assertEquals(2L, result.getTotalHits());
    assertRepos(result, repo1.getId(), repo2.getId());
    assertBranches(result, MASTER_BRANCH, otherBranch);
    assertNodes(result, repo1OtherNode1.id(), repo2MasterNode1.id());
}
Also used : FindNodesByMultiRepoQueryResult(com.enonic.xp.node.FindNodesByMultiRepoQueryResult) Repository(com.enonic.xp.repository.Repository) Branch(com.enonic.xp.branch.Branch) Node(com.enonic.xp.node.Node) MultiRepoNodeQuery(com.enonic.xp.node.MultiRepoNodeQuery) NodeQuery(com.enonic.xp.node.NodeQuery) SearchTargets(com.enonic.xp.node.SearchTargets) Test(org.junit.jupiter.api.Test)

Example 3 with SearchTargets

use of com.enonic.xp.node.SearchTargets in project xp by enonic.

the class FindNodesByMultiRepoQueryCommandTest method multi_repo_search.

@Test
public void multi_repo_search() throws Exception {
    final Repository repo1 = createRepo(REPO_USER_1, "repo1");
    final Repository repo2 = createRepo(REPO_USER_2, "repo2");
    runInContext(REPO_USER_1, repo1.getId(), () -> createNode(NodePath.ROOT, "repo1Node"));
    runInContext(REPO_USER_2, repo2.getId(), () -> createNode(NodePath.ROOT, "repo2Node"));
    final SearchTargets targets = SearchTargets.create().add(createTarget(MASTER_BRANCH, REPO_USER_1, repo1.getId())).add(createTarget(MASTER_BRANCH, REPO_USER_2, repo2.getId())).build();
    final NodeQuery query = NodeQuery.create().parent(NodePath.ROOT).build();
    final FindNodesByMultiRepoQueryResult result = doQuery(query, targets);
    assertEquals(2L, result.getTotalHits());
    assertRepos(result, repo1.getId(), repo2.getId());
    assertBranches(result, MASTER_BRANCH);
}
Also used : FindNodesByMultiRepoQueryResult(com.enonic.xp.node.FindNodesByMultiRepoQueryResult) Repository(com.enonic.xp.repository.Repository) MultiRepoNodeQuery(com.enonic.xp.node.MultiRepoNodeQuery) NodeQuery(com.enonic.xp.node.NodeQuery) SearchTargets(com.enonic.xp.node.SearchTargets) Test(org.junit.jupiter.api.Test)

Example 4 with SearchTargets

use of com.enonic.xp.node.SearchTargets in project xp by enonic.

the class FindNodesByMultiRepoQueryCommandTest method multi_repo_search_different_branches_same_repo.

@Test
public void multi_repo_search_different_branches_same_repo() throws Exception {
    final Repository repo1 = createRepo(REPO_USER_1, "repo1");
    final Repository repo2 = createRepo(REPO_USER_2, "repo2");
    // Create new branch in repo1
    final Branch otherBranch = callInContext(REPO_USER_1, repo1.getId(), MASTER_BRANCH, () -> createBranch("otherBranch"));
    final Node repo1MasterNode1 = callInContext(REPO_USER_1, repo1.getId(), MASTER_BRANCH, () -> createNode(NodePath.ROOT, "repo1Node"));
    final Node repo1OtherNode1 = callInContext(REPO_USER_1, repo1.getId(), otherBranch, () -> createNode(NodePath.ROOT, "repo1Node"));
    final Node repo2MasterNode1 = callInContext(REPO_USER_2, repo2.getId(), MASTER_BRANCH, () -> createNode(NodePath.ROOT, "repo2Node"));
    final SearchTargets targets = SearchTargets.create().add(createTarget(otherBranch, REPO_USER_1, repo1.getId())).add(createTarget(MASTER_BRANCH, REPO_USER_1, repo1.getId())).add(createTarget(MASTER_BRANCH, REPO_USER_2, repo2.getId())).build();
    final NodeQuery query = NodeQuery.create().parent(NodePath.ROOT).build();
    final FindNodesByMultiRepoQueryResult result = doQuery(query, targets);
    assertEquals(3L, result.getTotalHits());
    assertRepos(result, repo1.getId(), repo2.getId());
    assertBranches(result, MASTER_BRANCH, otherBranch);
    assertNodes(result, repo1OtherNode1.id(), repo1MasterNode1.id(), repo2MasterNode1.id());
}
Also used : FindNodesByMultiRepoQueryResult(com.enonic.xp.node.FindNodesByMultiRepoQueryResult) Repository(com.enonic.xp.repository.Repository) Branch(com.enonic.xp.branch.Branch) Node(com.enonic.xp.node.Node) MultiRepoNodeQuery(com.enonic.xp.node.MultiRepoNodeQuery) NodeQuery(com.enonic.xp.node.NodeQuery) SearchTargets(com.enonic.xp.node.SearchTargets) Test(org.junit.jupiter.api.Test)

Example 5 with SearchTargets

use of com.enonic.xp.node.SearchTargets in project xp by enonic.

the class FindNodesByMultiRepoQueryCommandTest method no_access_in_one_repo.

@Test
public void no_access_in_one_repo() throws Exception {
    final Repository repo1 = createRepo(REPO_USER_1, "repo1");
    final Repository repo2 = createRepo(REPO_USER_2, "repo2");
    runInContext(REPO_USER_1, repo1.getId(), () -> createNode(NodePath.ROOT, "repo1Node"));
    runInContext(REPO_USER_2, repo2.getId(), () -> createNode(NodePath.ROOT, "repo2Node"));
    final SearchTargets targets = SearchTargets.create().add(createTarget(MASTER_BRANCH, REPO_USER_1, repo1.getId())).add(// repoUser2 has no access
    createTarget(MASTER_BRANCH, REPO_USER_1, repo2.getId())).build();
    final NodeQuery query = NodeQuery.create().parent(NodePath.ROOT).build();
    final FindNodesByMultiRepoQueryResult result = doQuery(query, targets);
    assertEquals(1L, result.getTotalHits());
    assertRepos(result, repo1.getId());
    assertBranches(result, MASTER_BRANCH);
}
Also used : FindNodesByMultiRepoQueryResult(com.enonic.xp.node.FindNodesByMultiRepoQueryResult) Repository(com.enonic.xp.repository.Repository) MultiRepoNodeQuery(com.enonic.xp.node.MultiRepoNodeQuery) NodeQuery(com.enonic.xp.node.NodeQuery) SearchTargets(com.enonic.xp.node.SearchTargets) Test(org.junit.jupiter.api.Test)

Aggregations

SearchTargets (com.enonic.xp.node.SearchTargets)6 FindNodesByMultiRepoQueryResult (com.enonic.xp.node.FindNodesByMultiRepoQueryResult)5 MultiRepoNodeQuery (com.enonic.xp.node.MultiRepoNodeQuery)5 NodeQuery (com.enonic.xp.node.NodeQuery)5 Repository (com.enonic.xp.repository.Repository)5 Test (org.junit.jupiter.api.Test)5 Branch (com.enonic.xp.branch.Branch)2 Node (com.enonic.xp.node.Node)2 SearchTarget (com.enonic.xp.node.SearchTarget)1 MultiRepoSearchSource (com.enonic.xp.repo.impl.MultiRepoSearchSource)1 SearchResult (com.enonic.xp.repo.impl.search.result.SearchResult)1