private Resource getComponentEditPath(Resource component) { if (component != null) { if (component.getChild("edit") != null) { return component.getChild("edit"); } else { String parentResourceType = component.getResourceResolver().getParentResourceType(component); if (StringUtils.isNotBlank(parentResourceType)) { component = component.getResourceResolver().getResource(parentResourceType); if (component != null) { return getComponentEditPath(component); } } } } return null; }
public List<Tag> getTags() { TagManager tagMgr = request.getResourceResolver().adaptTo(TagManager.class); Resource resource = (Resource) request.getAttribute("result"); log.debug("Loading tags from {}@{}", resource.getPath(), property); List<Tag> tags = new ArrayList<Tag>(); String[] values = resource.getValueMap().get(property, String[].class); if (values != null) { for (String value : values) { tags.add(tagMgr.resolve(value)); } } log.debug("Loaded {} tags", tags.size()); return tags; } }
/** * Close the administrative resource resolver. This method should be called by the <code>@Deactivate</code> method * of the implementing class if the <code>getAdministrativeResourceResolver()</code> method was used at any time. */ protected final void closeResourceResolver() { if (resourceResolver != null) { resourceResolver.close(); } }
public void commitAndRefresh(ResourceResolver rr) throws PersistenceException, RepositoryException { if (rr.hasChanges()) { rr.commit(); } rr.refresh(); disableWorkflowProcessing(rr); }
private void deleteResource(ResourceResolver rr, String path) throws PersistenceException { Actions.setCurrentItem(path); Resource r = rr.getResource(path); if (r != null) { rr.delete(r); } }
ImageComponent(@Nonnull Resource component) { String fileReference = component.getValueMap().get(DownloadResource.PN_REFERENCE, String.class); if (StringUtils.isNotEmpty(fileReference)) { imageResource = component.getResourceResolver().getResource(fileReference); source = Source.ASSET; } else { Resource childFileNode = component.getChild(DownloadResource.NN_FILE); if (childFileNode != null) { if (JcrConstants.NT_FILE.equals(childFileNode.getResourceType())) { Resource jcrContent = childFileNode.getChild(JcrConstants.JCR_CONTENT); if (jcrContent != null) { if (jcrContent.getValueMap().containsKey(JcrConstants.JCR_DATA)) { imageResource = childFileNode; source = Source.FILE; } } } } } } }
/** * Create the oak index based on the ensure definition. * * @param ensuredDefinition the ensure definition * @param oakIndexes the parent oak index folder * @return the updated oak index resource * @throws PersistenceException * @throws RepositoryException */ public Resource create(final @Nonnull Resource ensuredDefinition, final @Nonnull Resource oakIndexes) throws RepositoryException { final Node oakIndex = JcrUtil.copy( ensuredDefinition.adaptTo(Node.class), oakIndexes.adaptTo(Node.class), ensuredDefinition.getName()); oakIndex.setPrimaryType(NT_OAK_QUERY_INDEX_DEFINITION); oakIndex.setProperty(JcrConstants.JCR_CREATED, Calendar.getInstance()); oakIndex.setProperty(JcrConstants.JCR_CREATED_BY, ENSURE_OAK_INDEX_USER_NAME); log.info("Created Oak Index at [ {} ] with Ensure Definition [ {} ]", oakIndex.getPath(), ensuredDefinition.getPath()); return ensuredDefinition.getResourceResolver().getResource(oakIndex.getPath()); }
private List<Resource> getAllowedTypes(@Nonnull SlingHttpServletRequest request) { List<Resource> allowedTypes = new ArrayList<>(); ResourceResolver resolver = request.getResourceResolver(); Resource contentResource = resolver.getResource((String) request.getAttribute(Value.CONTENTPATH_ATTRIBUTE)); ContentPolicyManager policyMgr = resolver.adaptTo(ContentPolicyManager.class); if (policyMgr != null) { ContentPolicy policy = policyMgr.getPolicy(contentResource); if (policy != null) { ValueMap props = policy.getProperties(); if (props != null) { String[] titleTypes = props.get("allowedTypes", String[].class); if (titleTypes != null && titleTypes.length > 0) { for (String titleType : titleTypes) { allowedTypes.add(new TitleTypeResource(titleType, resolver)); } } } } } return allowedTypes; }
@Override protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException { // return false by default request.setAttribute(RenderCondition.class.getName(), new SimpleRenderCondition(false)); // get component path Config config = new Config(request.getResource()); String componentPath = getParameter(config, request, PN_COMPONENT_PATH, String.class); if (componentPath == null) { return; } // get component resource Resource component = request.getResourceResolver().getResource(componentPath); if (component == null) { return; } // override fragment path if set ValueMap properties = component.getValueMap(); String displayMode = properties.get(PARAM_AND_PN_DISPLAY_MODE, String.class); String displayModeParam = request.getParameter(PARAM_AND_PN_DISPLAY_MODE); if (displayModeParam != null) { displayMode = displayModeParam; } boolean shouldShow = displayMode != null && displayMode.equals(getParameter(config, request,PARAM_AND_PN_DISPLAY_MODE, String.class)); request.setAttribute(RenderCondition.class.getName(), new SimpleRenderCondition(shouldShow)); }
/** * Read the list of children resources that are components * * @return */ @Nonnull private List<Resource> readChildren() { List<Resource> children = new LinkedList<>(); if (resource != null) { ComponentManager componentManager = request.getResourceResolver().adaptTo(ComponentManager.class); if (componentManager != null) { resource.getChildren().forEach(res -> { Component component = componentManager.getComponentOfResource(res); if (component != null) { children.add(res); } }); } } return children; }
@Nonnull @Override public String getGridResourceType() { String gridResourceType = DEFAULT_GRID_TYPE; ContentPolicyManager policyManager = resolver.adaptTo(ContentPolicyManager.class); ContentPolicy fragmentPolicy = policyManager != null ? policyManager.getPolicy(resource) : null; if (fragmentPolicy != null) { ValueMap props = fragmentPolicy.getProperties(); gridResourceType = props.get("cfm-grid-type", DEFAULT_GRID_TYPE); } return gridResourceType; }
/** * Given a {@code resourceResolver} and a {@code path} to a content policy, this method will return the policies root page * {@link Resource} for the provided {@code path}. * * @param resourceResolver a resource resolver * @param path the path to analyse * @return the policies root page as a {@link Resource} or {@code null} */ @Nullable private Resource getPoliciesRootPage(@Nonnull ResourceResolver resourceResolver, @Nonnull String path) { Resource resource = resourceResolver.getResource(path); if (resource != null && resource.getResourceType().equals(NameConstants.NT_PAGE)) { return resource; } else if (StringUtils.isNotEmpty(path) && path.lastIndexOf('/') > 0) { return getPoliciesRootPage(resourceResolver, path.substring(0, path.lastIndexOf('/'))); } else { return null; } } }
@Override protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException { try { WorkflowSession workflowSession = request.getResourceResolver().adaptTo(WorkflowSession.class); ArrayList<Resource> resources = new ArrayList<>(); if (workflowSession != null) { WorkflowModel[] models = workflowSession.getModels(); for (WorkflowModel model : models) { resources.add(new WorkflowModelResource(model, request.getResourceResolver())); } } SimpleDataSource dataSource = new SimpleDataSource(resources.iterator()); request.setAttribute(DataSource.class.getName(), dataSource); } catch (WorkflowException e) { throw new ServletException(e); } }
@Override protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException { boolean hasImageDelegation = false; ResourceResolver resourceResolver = request.getResourceResolver(); ComponentManager componentManager = resourceResolver.adaptTo(ComponentManager.class); String suffix = request.getRequestPathInfo().getSuffix(); if (componentManager != null && StringUtils.isNotEmpty(suffix)) { Resource policiesRootPage = getPoliciesRootPage(resourceResolver, suffix); if (policiesRootPage != null) { String resourceType = suffix.substring(policiesRootPage.getPath().length() + 1, suffix.lastIndexOf('/')); com.day.cq.wcm.api.components.Component component = componentManager.getComponent(resourceType); if (component != null && component.isAccessible()) { String imageDelegate = component.getProperties().get(AbstractImageDelegatingModel.IMAGE_DELEGATE, String.class); if (StringUtils.isNotEmpty(imageDelegate)) { hasImageDelegation = true; com.day.cq.wcm.api.components.Component delegate = componentManager.getComponent(imageDelegate); if (delegate != null && delegate.isAccessible()) { ExpressionCustomizer customizer = ExpressionCustomizer.from(request); customizer.setVariable(AbstractImageDelegatingModel.IMAGE_DELEGATE, delegate); } } } } } request.setAttribute(RenderCondition.class.getName(), new SimpleRenderCondition(hasImageDelegation)); }
private WorkflowModel getWorkflowModel(WorkflowSession workflowSession, String workflowModelId) { workflowModelId = StringUtils.stripToEmpty(workflowModelId); WorkflowModel workflowModel = null; if (StringUtils.isNotBlank(workflowModelId)) { if (!workflowModelId.endsWith("/jcr:content/model")) { ResourceResolver resourceResolver = workflowHelper.getResourceResolver(workflowSession); Resource resource = resourceResolver.getResource(workflowModelId + "/jcr:content/model"); if (resource != null && StringUtils.equals(resource.getValueMap().get(JcrConstants.JCR_PRIMARYTYPE, String.class),"cq:WorkflowModel")) { workflowModelId = resource.getPath(); } } try { workflowModel = workflowSession.getModel(workflowModelId); } catch (WorkflowException e) { log.warn("Could not find Workflow Model for [ {} ]", workflowModelId); } } return workflowModel; }
private static Set<String> getPathsFromQuery(ResourceResolver resourceResolver, String language, String query) { if (StringUtils.isBlank(query)) { return Collections.emptySet(); } Set<String> paths = new HashSet<>(); language = StringUtils.defaultIfEmpty(language, "xpath"); Iterator<Resource> resources = resourceResolver.findResources(query, language); while (resources.hasNext()) { paths.add(resources.next().getPath()); } return paths; }
public final List<Result> getResults(final ResourceResolver resourceResolver) { List<Result> results = new ArrayList<Result>(); for(Result result : getResults()) { if(StringUtils.isNotBlank(result.getPath())) { results.add(result); } else if (resourceResolver.resolve(result.getPath()) != null) { results.add(result); } } return results; }
@Override protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { final ResourceResolver resolver = request.getResourceResolver(); final String vanityPath = request.getParameter("vanityPath"); final String pagePath = request.getParameter("pagePath"); log.debug("vanity path parameter passed is {}; page path parameter passed is {}", vanityPath, pagePath); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); List<String> paths = new ArrayList<>(); if (StringUtils.isNotBlank(vanityPath)) { String xpath = "//element(*)[" + NameConstants.PN_SLING_VANITY_PATH + "='" + vanityPath + "']"; @SuppressWarnings("deprecation") Iterator<Resource> resources = resolver.findResources(xpath, Query.XPATH); while (resources.hasNext()) { Resource resource = resources.next(); String path = resource.getPath(); if (path.startsWith("/content") && !path.equals(pagePath)) { paths.add(path); } } } Gson gson = new Gson(); gson.toJson(paths, response.getWriter()); }
public String getUserName(ResourceResolver resolver, String userId) throws RepositoryException { if (!userNames.containsKey(userId)) { final UserPropertiesManager upm = resolver.adaptTo(UserPropertiesManager.class); UserProperties userProperties = upm.getUserProperties(userId, UserPropertiesService.PRIVATE_PROFILE); String name = userId; if (userProperties != null && !StringUtils.isEmpty(userProperties.getDisplayName())) { name = userProperties.getDisplayName(); } userNames.put(userId, name); } return userNames.get(userId); }