use of com.day.cq.search.result.Hit in project aem-core-wcm-components by Adobe-Marketing-Cloud.
the class ListImplTest method testSearchListType.
@Test
public void testSearchListType() throws Exception {
SearchResult searchResult = mock(SearchResult.class);
Hit hit = mock(Hit.class);
when(mockSimpleSearch.getResult()).thenReturn(searchResult);
when(searchResult.getHits()).thenReturn(Collections.singletonList(hit));
Resource contentResource = context.currentResource("/content/list/pages/page_1/jcr:content");
when(hit.getResource()).thenReturn(contentResource);
Resource resource = context.currentResource("/content/list/listTypes/searchListType");
slingBindings.put(WCMBindings.PROPERTIES, resource.adaptTo(ValueMap.class));
slingBindings.put(WCMBindings.CURRENT_STYLE, new MockStyle(resource));
List list = context.request().adaptTo(List.class);
assertEquals(1, list.getItems().size());
}
use of com.day.cq.search.result.Hit in project acs-aem-commons by Adobe-Consulting-Services.
the class QueryBuilderViewQuery method execute.
@Override
public Collection<com.day.cq.wcm.core.contentfinder.Hit> execute() {
final List<com.day.cq.wcm.core.contentfinder.Hit> hits = new ArrayList<com.day.cq.wcm.core.contentfinder.Hit>();
if (this.query == null) {
return hits;
}
final SearchResult result = this.query.getResult();
// iterating over the results
for (Hit hit : result.getHits()) {
try {
hits.add(createHit(hit));
} catch (RepositoryException e) {
log.error("Could not return required information for Content Finder result: {}", hit.toString());
}
}
return hits;
}
use of com.day.cq.search.result.Hit in project acs-aem-commons by Adobe-Consulting-Services.
the class QueryHelperImpl method getResourcesFromQueryBuilder.
private List<Resource> getResourcesFromQueryBuilder(ResourceResolver resourceResolver, String[] lines) throws RepositoryException {
final List<Resource> resources = new ArrayList<>();
final Map<String, String> params = ParameterUtil.toMap(lines, "=", false, null, true);
// ensure all results are returned
if (!params.containsKey("p.limit")) {
params.put("p.limit", "-1");
}
final com.day.cq.search.Query query = queryBuilder.createQuery(PredicateGroup.create(params), resourceResolver.adaptTo(Session.class));
final List<Hit> hits = query.getResult().getHits();
for (final Hit hit : hits) {
resources.add(hit.getResource());
}
return resources;
}
use of com.day.cq.search.result.Hit in project acs-aem-commons by Adobe-Consulting-Services.
the class LastModifiedOperationImpl method getLastModifiedQuery.
private List<Resource> getLastModifiedQuery(final ResourceResolver resourceResolver, final String userId, final String relativeDateRange, final String nodeType, final String dateProperty, final int limit) {
final List<Resource> resources = new ArrayList<Resource>();
final Map<String, String> map = new HashMap<String, String>();
map.put("path", "/content");
map.put("type", nodeType);
map.put("1_property", NameConstants.PN_PAGE_LAST_MOD_BY);
map.put("1_property.value", userId);
map.put("relativedaterange.property", dateProperty);
map.put("relativedaterange.lowerBound", relativeDateRange);
map.put("orderby", dateProperty);
map.put("orderby.sort", "desc");
map.put("p.limit", String.valueOf(limit));
map.put("p.guessTotal", "true");
try {
log.debug("Lastmod QueryBuilder Map: {}", new JSONObject(map).toString(2));
} catch (JSONException e) {
// no-op
}
final Query query = queryBuilder.createQuery(PredicateGroup.create(map), resourceResolver.adaptTo(Session.class));
final SearchResult result = query.getResult();
for (final Hit hit : result.getHits()) {
try {
resources.add(hit.getResource());
} catch (RepositoryException e) {
log.error("Error resolving Hit to Resource [ {} ]. " + "Likely issue with lucene index being out of sync.", hit.toString());
}
}
return resources;
}
use of com.day.cq.search.result.Hit in project acs-aem-commons by Adobe-Consulting-Services.
the class EnsureAce method findAcls.
/**
* Locates by query all the ACLs that the principal participates in.
*
* @param resourceResolver
* the resource resolver to perform the user management
* @param principalName
* the principal name
* @param accessControlManager
* Jackrabbit access control manager
* @return a list of ACLs that principal participates in.
* @throws RepositoryException
*/
private List<JackrabbitAccessControlList> findAcls(ResourceResolver resourceResolver, String principalName, JackrabbitAccessControlManager accessControlManager) throws RepositoryException {
final Set<String> paths = new HashSet<String>();
final List<JackrabbitAccessControlList> acls = new ArrayList<JackrabbitAccessControlList>();
final Map<String, String> params = new HashMap<String, String>();
params.put("type", AccessControlConstants.NT_REP_ACE);
params.put("property", AccessControlConstants.REP_PRINCIPAL_NAME);
params.put("property.value", principalName);
params.put("p.limit", "-1");
final Query query = queryBuilder.createQuery(PredicateGroup.create(params), resourceResolver.adaptTo(Session.class));
// Handle leaking resource resolver in AEM QueryBuilder
ResourceResolver leakingResourceResolver = null;
for (final Hit hit : query.getResult().getHits()) {
try {
// Handle leaking resource resolver in AEM QueryBuilder
if (leakingResourceResolver == null) {
leakingResourceResolver = hit.getResource().getResourceResolver();
}
final Resource aceResource = resourceResolver.getResource(hit.getPath());
// first parent is the rep:policy node
// second parent (grand-parent) is the content node this ACE controls
// that is the node we need to use the JackrabbitAccessControlManager api
final Resource contentResource = aceResource.getParent().getParent();
if (!paths.contains(contentResource.getPath())) {
for (AccessControlPolicy policy : accessControlManager.getPolicies(contentResource.getPath())) {
if (policy instanceof JackrabbitAccessControlList) {
acls.add((JackrabbitAccessControlList) policy);
break;
}
}
}
} catch (RepositoryException e) {
log.error("Failed to get resource for query result.", e);
}
}
// Handle leaking resource resolver in AEM QueryBuilder
if (leakingResourceResolver != null) {
leakingResourceResolver.close();
}
return acls;
}
Aggregations