This is an automated email from the ASF dual-hosted git repository.
dklco pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git
The following commit(s) were added to refs/heads/master by this push:
new d771913 Removing PostConstructor annotations to enable in Karaf
d771913 is described below
commit d7719138bc01ebad747acb94ed471aa291d45362
Author: Dan Klco <[email protected]>
AuthorDate: Sat Dec 26 23:17:52 2020 -0500
Removing PostConstructor annotations to enable in Karaf
---
.../core/internal/models/ComponentPolicyImpl.java | 15 +--
.../core/internal/models/InsightsModelImpl.java | 19 +--
.../internal/models/PageTemplateManagerImpl.java | 11 +-
.../sling/cms/core/models/ContentBreadcrumb.java | 39 +++----
.../apache/sling/cms/core/models/ErrorHandler.java | 128 ++++++++++-----------
.../cms/reference/forms/impl/FormRequestImpl.java | 86 ++++++--------
.../sling/cms/reference/models/ItemList.java | 109 ++++++++----------
.../apache/sling/cms/reference/models/Search.java | 105 ++++++++---------
.../cms/reference/form/impl/FormHandlerTest.java | 10 +-
.../reference/form/impl/FormRequestImplTest.java | 7 +-
.../form/impl/actions/SendEmailActionTest.java | 2 +-
11 files changed, 237 insertions(+), 294 deletions(-)
diff --git
a/core/src/main/java/org/apache/sling/cms/core/internal/models/ComponentPolicyImpl.java
b/core/src/main/java/org/apache/sling/cms/core/internal/models/ComponentPolicyImpl.java
index 9922672..8111ee5 100644
---
a/core/src/main/java/org/apache/sling/cms/core/internal/models/ComponentPolicyImpl.java
+++
b/core/src/main/java/org/apache/sling/cms/core/internal/models/ComponentPolicyImpl.java
@@ -61,14 +61,14 @@ public class ComponentPolicyImpl implements ComponentPolicy
{
@Override
public String[] getAvailableComponentTypes() {
- return policyResource.map(pr ->
pr.getValueMap().get("availableComponentTypes", new String[0]))
+ return getPolicyResource().map(pr ->
pr.getValueMap().get("availableComponentTypes", new String[0]))
.orElse(new String[0]);
}
@Override
public Map<String, Resource> getComponentConfigs() {
Map<String, Resource> configs = new HashMap<>();
- Resource container = policyResource.map(pr ->
pr.getChild("componentConfigurations")).orElse(null);
+ Resource container = getPolicyResource().map(pr ->
pr.getChild("componentConfigurations")).orElse(null);
if (container != null) {
container.getChildren().forEach(c ->
configs.put(c.getValueMap().get("type", String.class), c));
}
@@ -77,18 +77,19 @@ public class ComponentPolicyImpl implements ComponentPolicy
{
return configs;
}
- @PostConstruct
- public void init() {
- policyResource = Optional.ofNullable(resolver.getResource(policyPath));
+ private Optional<Resource> getPolicyResource() {
+ return Optional.ofNullable(resolver.getResource(policyPath));
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "ComponentPolicyImpl [pathPattern=" + pathPattern + ",
policyPath=" + policyPath + ", resolver="
- + resolver + ", policyResource=" + policyResource + "]";
+ + resolver + ", policyResource=" + getPolicyResource() + "]";
}
}
diff --git
a/core/src/main/java/org/apache/sling/cms/core/internal/models/InsightsModelImpl.java
b/core/src/main/java/org/apache/sling/cms/core/internal/models/InsightsModelImpl.java
index 6f2e41e..1fe3ebd 100644
---
a/core/src/main/java/org/apache/sling/cms/core/internal/models/InsightsModelImpl.java
+++
b/core/src/main/java/org/apache/sling/cms/core/internal/models/InsightsModelImpl.java
@@ -19,8 +19,6 @@ package org.apache.sling.cms.core.internal.models;
import java.util.Collections;
import java.util.List;
-import javax.annotation.PostConstruct;
-
import org.apache.sling.api.resource.Resource;
import org.apache.sling.cms.CMSConstants;
import org.apache.sling.cms.File;
@@ -44,31 +42,24 @@ public class InsightsModelImpl implements InsightsModel {
@OSGiService
private InsightFactory insightsFactory;
- private List<Insight> insights;
-
private Resource resource;
public InsightsModelImpl(Resource resource) {
this.resource = resource;
}
- @PostConstruct
- public void init() {
+ @Override
+ public List<Insight> getInsights() {
if (CMSConstants.NT_FILE.equals(resource.getResourceType())) {
log.debug("Gathering file insights for resource {}", resource);
- insights =
insightsFactory.getInsights(resource.adaptTo(File.class));
+ return insightsFactory.getInsights(resource.adaptTo(File.class));
} else if (CMSConstants.NT_PAGE.equals(resource.getResourceType())) {
log.debug("Gathering page insights for resource {}", resource);
- insights =
insightsFactory.getInsights(resource.adaptTo(Page.class));
+ return insightsFactory.getInsights(resource.adaptTo(Page.class));
} else {
log.debug("Insights not available for resource {}", resource);
- insights = Collections.emptyList();
+ return Collections.emptyList();
}
}
- @Override
- public List<Insight> getInsights() {
- return insights;
- }
-
}
diff --git
a/core/src/main/java/org/apache/sling/cms/core/internal/models/PageTemplateManagerImpl.java
b/core/src/main/java/org/apache/sling/cms/core/internal/models/PageTemplateManagerImpl.java
index cfe8091..af44cba 100644
---
a/core/src/main/java/org/apache/sling/cms/core/internal/models/PageTemplateManagerImpl.java
+++
b/core/src/main/java/org/apache/sling/cms/core/internal/models/PageTemplateManagerImpl.java
@@ -42,8 +42,6 @@ public class PageTemplateManagerImpl implements
PageTemplateManager {
private Resource resource;
- private List<PageTemplate> siteTemplates;
-
@OSGiService
private ConfigurationResourceResolver configurationResourceResolver;
@@ -51,9 +49,8 @@ public class PageTemplateManagerImpl implements
PageTemplateManager {
this.resource = resource;
}
- @PostConstruct
- public void init() {
- siteTemplates = CMSUtils.adaptResources(
+ private List<PageTemplate> getSiteTemplates() {
+ return CMSUtils.adaptResources(
configurationResourceResolver.getResourceCollection(resource,
"site", "templates"), PageTemplate.class);
}
@@ -62,7 +59,7 @@ public class PageTemplateManagerImpl implements
PageTemplateManager {
String path = resource.getPath();
List<PageTemplate> availableTemplates = new ArrayList<>();
- for (PageTemplate template : siteTemplates) {
+ for (PageTemplate template : getSiteTemplates()) {
log.debug("Checking to see if template {} is available for path
{}", template.getResource().getPath(),
path);
for (String allowedPath : template.getAllowedPaths()) {
@@ -84,6 +81,6 @@ public class PageTemplateManagerImpl implements
PageTemplateManager {
*/
@Override
public String toString() {
- return "PageTemplateManager [siteTemplates=" + siteTemplates + ",
resource=" + resource + "]";
+ return "PageTemplateManager [siteTemplates=" + getSiteTemplates() + ",
resource=" + resource + "]";
}
}
diff --git
a/core/src/main/java/org/apache/sling/cms/core/models/ContentBreadcrumb.java
b/core/src/main/java/org/apache/sling/cms/core/models/ContentBreadcrumb.java
index 7205807..279b714 100644
--- a/core/src/main/java/org/apache/sling/cms/core/models/ContentBreadcrumb.java
+++ b/core/src/main/java/org/apache/sling/cms/core/models/ContentBreadcrumb.java
@@ -21,8 +21,6 @@ import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
-
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
@@ -49,8 +47,6 @@ public class ContentBreadcrumb {
private long depth;
- private List<Pair<String, String>> parents;
-
@OSGiService
private ResourceEditorAssociationProvider provider;
@@ -68,6 +64,7 @@ public class ContentBreadcrumb {
}
public String getCurrentItem() {
+ List<Pair<String, String>> parents = getParents();
if ((parents == null || parents.isEmpty()) &&
StringUtils.isNotBlank(rootTitle)) {
return rootTitle;
}
@@ -81,23 +78,6 @@ public class ContentBreadcrumb {
}
public List<Pair<String, String>> getParents() {
- return parents;
- }
-
- private String getTitle(Resource resource) {
- String title = resource.getValueMap().get(CMSConstants.PN_TITLE,
String.class);
- if (StringUtils.isNotBlank(title)) {
- return title;
- }
- title = resource.getValueMap().get(JcrConstants.JCR_CONTENT + "/" +
CMSConstants.PN_TITLE, String.class);
- if (StringUtils.isNotBlank(title)) {
- return title;
- }
- return resource.getName();
- }
-
- @PostConstruct
- public void init() {
List<Resource> ps = new ArrayList<>();
Resource current = resource;
@@ -118,9 +98,24 @@ public class ContentBreadcrumb {
ps.clear();
}
- parents = ps.stream().map(p -> new ImmutablePair<>(getLink(p),
getTitle(p))).collect(Collectors.toList());
+ List<Pair<String, String>> parents = ps.stream().map(p -> new
ImmutablePair<>(getLink(p), getTitle(p)))
+ .collect(Collectors.toList());
if (!parents.isEmpty() && StringUtils.isNotBlank(rootTitle)) {
parents.set(0, new ImmutablePair<>(parents.get(0).getLeft(),
rootTitle));
}
+ return parents;
}
+
+ private String getTitle(Resource resource) {
+ String title = resource.getValueMap().get(CMSConstants.PN_TITLE,
String.class);
+ if (StringUtils.isNotBlank(title)) {
+ return title;
+ }
+ title = resource.getValueMap().get(JcrConstants.JCR_CONTENT + "/" +
CMSConstants.PN_TITLE, String.class);
+ if (StringUtils.isNotBlank(title)) {
+ return title;
+ }
+ return resource.getName();
+ }
+
}
diff --git
a/core/src/main/java/org/apache/sling/cms/core/models/ErrorHandler.java
b/core/src/main/java/org/apache/sling/cms/core/models/ErrorHandler.java
index 2799bcd..f89e904 100644
--- a/core/src/main/java/org/apache/sling/cms/core/models/ErrorHandler.java
+++ b/core/src/main/java/org/apache/sling/cms/core/models/ErrorHandler.java
@@ -18,7 +18,7 @@ package org.apache.sling.cms.core.models;
import java.util.Collections;
-import javax.annotation.PostConstruct;
+import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletResponse;
@@ -43,6 +43,7 @@ import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.Optional;
import org.apache.sling.models.annotations.injectorspecific.OSGiService;
import org.apache.sling.models.annotations.injectorspecific.RequestAttribute;
+import org.apache.sling.models.annotations.injectorspecific.Self;
import org.apache.sling.models.annotations.injectorspecific.SlingObject;
import org.osgi.annotation.versioning.ProviderType;
import org.slf4j.Logger;
@@ -137,27 +138,70 @@ public class ErrorHandler {
*/
public static final String SLING_CMS_ERROR_PATH =
"/static/sling-cms/errorhandling/";
- @RequestAttribute
- @Named(SlingConstants.ERROR_STATUS)
- @Optional
- @Default(intValues = HttpServletResponse.SC_INTERNAL_SERVER_ERROR)
- private Integer errorCode;
+ private Resource handler;
- @OSGiService
- private ResourceResolverFactory factory;
+ private final SlingHttpServletRequest slingRequest;
+ private final SlingHttpServletResponse slingResponse;
- private Resource handler;
+ @Inject
+ public ErrorHandler(@Self SlingHttpServletRequest slingRequest,
@SlingObject SlingHttpServletResponse slingResponse,
+ @RequestAttribute @Named(SlingConstants.ERROR_STATUS) @Optional
@Default(intValues = HttpServletResponse.SC_INTERNAL_SERVER_ERROR) Integer
errorCode,
+ @OSGiService ResourceResolverFactory factory) {
+ this.slingRequest = slingRequest;
+ this.slingResponse = slingResponse;
- @SlingObject
- private SlingHttpServletResponse slingResponse;
+ Resource resource = slingRequest.getResource();
+ ResourceResolver resolver = slingRequest.getResourceResolver();
- private SlingHttpServletRequest slingRequest;
+ log.debug("Calculating error handling scripts for resource {} and
error code {}", resource, errorCode);
- public ErrorHandler(SlingHttpServletRequest slingRequest) {
- this.slingRequest = slingRequest;
+ if (slingRequest.getAttribute(SlingConstants.ERROR_EXCEPTION) != null)
{
+ log.warn("Handing exception of type {} {}", errorCode,
+ slingRequest.getAttribute(SlingConstants.ERROR_EXCEPTION));
+ }
+
+ calculateErrorCode(resolver, factory, errorCode);
+
+ try {
+ SiteManager siteMgr = resource.adaptTo(SiteManager.class);
+ if (siteMgr != null && siteMgr.getSite() != null) {
+ Site site = siteMgr.getSite();
+ log.debug("Checking for error pages in the site {}",
site.getPath());
+
+ handler = site.getResource().getChild(SITE_ERRORS_SUBPATH +
errorCode.toString());
+ if (handler == null) {
+ handler = site.getResource().getChild(SITE_ERRORS_SUBPATH
+ DEFAULT_ERROR_PAGE);
+ }
+ if (handler != null) {
+ log.debug("Using error handler {}", handler);
+ } else {
+ log.debug("No error page defined for site {}",
site.getPath());
+ }
+ }
+ } catch (Exception e) {
+ log.debug("Failed to retrieve current site, using default error
handling");
+ }
+
+ if (handler == null) {
+ log.debug("Using Sling CMS default error pages");
+ handler = resolver.getResource(SLING_CMS_ERROR_PATH +
errorCode.toString());
+ if (handler == null) {
+ handler = resolver.getResource(SLING_CMS_ERROR_PATH +
DEFAULT_ERROR_PAGE);
+ }
+ log.debug("Using Sling CMS error handler {}", handler);
+ }
+
+ log.debug("Sending error {}", errorCode);
+ slingResponse.reset();
+ slingResponse.setContentType("text/html");
+ slingResponse.setStatus(errorCode);
+
+ doInclude();
+
+ log.debug("Error handler initialized successfully!");
}
- private void calculateErrorCode(ResourceResolver resolver) {
+ private void calculateErrorCode(ResourceResolver resolver,
ResourceResolverFactory factory, Integer errorCode) {
if (errorCode == HttpServletResponse.SC_NOT_FOUND) {
log.debug("Validating the resource does not exist for all users");
ResourceResolver adminResolver = null;
@@ -208,58 +252,4 @@ public class ErrorHandler {
}
}
- @PostConstruct
- public void init() {
-
- Resource resource = slingRequest.getResource();
- ResourceResolver resolver = slingRequest.getResourceResolver();
-
- log.debug("Calculating error handling scripts for resource {} and
error code {}", resource, errorCode);
-
- if (slingRequest.getAttribute(SlingConstants.ERROR_EXCEPTION) != null)
{
- log.warn("Handing exception of type {} {}", errorCode,
- slingRequest.getAttribute(SlingConstants.ERROR_EXCEPTION));
- }
-
- calculateErrorCode(resolver);
-
- try {
- SiteManager siteMgr = resource.adaptTo(SiteManager.class);
- if (siteMgr != null && siteMgr.getSite() != null) {
- Site site = siteMgr.getSite();
- log.debug("Checking for error pages in the site {}",
site.getPath());
-
- handler = site.getResource().getChild(SITE_ERRORS_SUBPATH +
errorCode.toString());
- if (handler == null) {
- handler = site.getResource().getChild(SITE_ERRORS_SUBPATH
+ DEFAULT_ERROR_PAGE);
- }
- if (handler != null) {
- log.debug("Using error handler {}", handler);
- } else {
- log.debug("No error page defined for site {}",
site.getPath());
- }
- }
- } catch (Exception e) {
- log.debug("Failed to retrieve current site, using default error
handling");
- }
-
- if (handler == null) {
- log.debug("Using Sling CMS default error pages");
- handler = resolver.getResource(SLING_CMS_ERROR_PATH +
errorCode.toString());
- if (handler == null) {
- handler = resolver.getResource(SLING_CMS_ERROR_PATH +
DEFAULT_ERROR_PAGE);
- }
- log.debug("Using Sling CMS error handler {}", handler);
- }
-
- log.debug("Sending error {}", errorCode);
- slingResponse.reset();
- slingResponse.setContentType("text/html");
- slingResponse.setStatus(errorCode);
-
- doInclude();
-
- log.debug("Error handler initialized successfully!");
- }
-
}
diff --git
a/reference/src/main/java/org/apache/sling/cms/reference/forms/impl/FormRequestImpl.java
b/reference/src/main/java/org/apache/sling/cms/reference/forms/impl/FormRequestImpl.java
index a822990..90eb330 100644
---
a/reference/src/main/java/org/apache/sling/cms/reference/forms/impl/FormRequestImpl.java
+++
b/reference/src/main/java/org/apache/sling/cms/reference/forms/impl/FormRequestImpl.java
@@ -19,9 +19,10 @@ package org.apache.sling.cms.reference.forms.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
+import javax.inject.Inject;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
@@ -35,33 +36,54 @@ import
org.apache.sling.cms.reference.forms.FormValueProvider;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.InjectionStrategy;
import org.apache.sling.models.annotations.injectorspecific.OSGiService;
+import org.apache.sling.models.annotations.injectorspecific.Self;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/**
+ * Implementation of a Form Request
+ */
@Model(adaptables = { SlingHttpServletRequest.class, Resource.class },
adapters = FormRequest.class)
public class FormRequestImpl implements FormRequest {
private static final Logger log =
LoggerFactory.getLogger(FormRequestImpl.class);
- private List<FieldHandler> fieldHandlers;
-
- private Map<String, Object> formData = new HashMap<>();
+ private final List<FieldHandler> fieldHandlers;
- @OSGiService(injectionStrategy = InjectionStrategy.OPTIONAL)
- private List<FormValueProvider> formValueProvider;
+ private final Map<String, Object> formData = new HashMap<>();
- private final boolean loadProviders;
+ private final SlingHttpServletRequest request;
- private SlingHttpServletRequest request;
-
- public FormRequestImpl(SlingHttpServletRequest request) throws
FormException {
+ @Inject
+ @SuppressWarnings("unchecked")
+ public FormRequestImpl(@Self SlingHttpServletRequest request,
+ @OSGiService(injectionStrategy = InjectionStrategy.OPTIONAL)
List<FormValueProvider> formValueProvider,
+ @OSGiService(injectionStrategy = InjectionStrategy.OPTIONAL)
List<FieldHandler> fieldHandlers) {
this.request = request;
- this.loadProviders = true;
+ this.fieldHandlers = fieldHandlers;
+ if (request.getSession().getAttribute(this.getSessionId()) != null) {
+ formData.putAll(((Map<String, Object>)
request.getSession().getAttribute(this.getSessionId())));
+ }
+ if (getFormResource() != null &&
getFormResource().getChild("providers") != null) {
+ loadProviders(formValueProvider);
+ }
}
- public FormRequestImpl(SlingHttpServletRequest request, boolean
loadProviders) throws FormException {
- this.request = request;
- this.loadProviders = loadProviders;
+ private void loadProviders(List<FormValueProvider> formValueProvider) {
+ List<Resource> providers =
ResourceTree.stream(getFormResource().getChild("providers"))
+ .map(ResourceTree::getResource).collect(Collectors.toList());
+ for (Resource provider : providers) {
+ log.debug("Looking for handler for: {}", provider);
+ if (formValueProvider != null) {
+ for (FormValueProvider fvp : formValueProvider) {
+ if (fvp.handles(provider)) {
+ log.debug("Invoking field value provider: {}",
fvp.getClass());
+ fvp.loadValues(provider, formData);
+ break;
+ }
+ }
+ }
+ }
}
@Override
@@ -79,30 +101,6 @@ public class FormRequestImpl implements FormRequest {
return request;
}
- @SuppressWarnings("unchecked")
- @PostConstruct
- public void init() throws FormException {
- if (request.getSession().getAttribute(this.getSessionId()) != null) {
- formData.putAll(((Map<String, Object>)
request.getSession().getAttribute(this.getSessionId())));
- }
- if (this.loadProviders && getFormResource().getChild("providers") !=
null) {
- List<Resource> providers =
ResourceTree.stream(getFormResource().getChild("providers"))
-
.map(ResourceTree::getResource).collect(Collectors.toList());
- for (Resource provider : providers) {
- log.debug("Looking for handler for: {}", provider);
- if (formValueProvider != null) {
- for (FormValueProvider fvp : formValueProvider) {
- if (fvp.handles(provider)) {
- log.debug("Invoking field value provider: {}",
fvp.getClass());
- fvp.loadValues(provider, formData);
- break;
- }
- }
- }
- }
- }
- }
-
public void initFields() throws FormException {
List<Resource> fields =
ResourceTree.stream(getFormResource().getChild("fields")).map(ResourceTree::getResource)
.collect(Collectors.toList());
@@ -120,17 +118,7 @@ public class FormRequestImpl implements FormRequest {
@Override
public String getSessionId() {
- return "errorval-" + this.getOriginalRequest().getResource().getPath();
- }
-
- @OSGiService(injectionStrategy = InjectionStrategy.OPTIONAL)
- public void setFieldHandlers(List<FieldHandler> fieldHandlers) {
- this.fieldHandlers = fieldHandlers;
- }
-
- @OSGiService(injectionStrategy = InjectionStrategy.OPTIONAL)
- public void setFormValueProvider(List<FormValueProvider>
formValueProvider) {
- this.formValueProvider = formValueProvider;
+ return "errorval-" +
Optional.ofNullable(getFormResource()).map(Resource::getPath).orElse("null");
}
}
diff --git
a/reference/src/main/java/org/apache/sling/cms/reference/models/ItemList.java
b/reference/src/main/java/org/apache/sling/cms/reference/models/ItemList.java
index d8d8330..26c8fb5 100644
---
a/reference/src/main/java/org/apache/sling/cms/reference/models/ItemList.java
+++
b/reference/src/main/java/org/apache/sling/cms/reference/models/ItemList.java
@@ -17,10 +17,14 @@
package org.apache.sling.cms.reference.models;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.Iterator;
-import java.util.*;
+import java.util.List;
+import java.util.Set;
-import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
import javax.jcr.query.Query;
import org.apache.commons.lang3.StringUtils;
@@ -28,6 +32,7 @@ import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.RequestAttribute;
+import org.apache.sling.models.annotations.injectorspecific.Self;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,63 +45,22 @@ public class ItemList {
private static final Logger log = LoggerFactory.getLogger(ItemList.class);
- private int count;
+ private final int count;
- private int end;
+ private final int end;
+ private final List<Resource> items;
- @RequestAttribute
- private String limit;
+ private final int page;
- private int page;
+ private final Integer[] pages;
+ private final String query;
- private Integer[] pages;
-
- @RequestAttribute
- private String query;
-
- private SlingHttpServletRequest request;
-
- private List<Resource> items = new ArrayList<>();
-
- private int start;
-
- public ItemList(SlingHttpServletRequest request) {
- this.request = request;
- }
-
- public int getCount() {
- return count;
- }
-
- public int getCurrentPage() {
- return page + 1;
- }
-
- public int getEnd() {
- return end;
- }
-
- public Integer[] getPages() {
- return pages;
- }
-
- public String getQuery() {
- return query;
- }
-
- public List<Resource> getItems() {
- return items;
- }
-
- public int getStart() {
- return start;
- }
-
- @PostConstruct
- public void init() {
-
- log.trace("init");
+ private final int start;
+ @Inject
+ public ItemList(@Self SlingHttpServletRequest request, @RequestAttribute
@Named("limit") String limit,
+ @RequestAttribute @Named("query") String query) {
+ this.query = query;
Set<String> distinct = new HashSet<>();
if (request.getRequestPathInfo().getSuffix() != null) {
@@ -104,15 +68,16 @@ public class ItemList {
}
log.debug("Listing results of: {}", query);
+ List<Resource> queryItems = new ArrayList<>();
Iterator<Resource> res =
request.getResourceResolver().findResources(query, Query.JCR_SQL2);
while (res.hasNext()) {
Resource result = res.next();
if (!distinct.contains(result.getPath())) {
- items.add(result);
+ queryItems.add(result);
distinct.add(result.getPath());
}
}
- count = items.size();
+ count = queryItems.size();
log.debug("Found {} results", count);
if (StringUtils.isNotBlank(request.getParameter("page")) &&
request.getParameter("page").matches("\\d+")) {
@@ -123,7 +88,7 @@ public class ItemList {
log.debug("Page {} not specified or not valid",
request.getParameter("page"));
}
- int l = Integer.parseInt(this.limit, 10);
+ int l = Integer.parseInt(limit, 10);
if (page * l >= count) {
start = count;
} else {
@@ -137,7 +102,7 @@ public class ItemList {
end = (page * l) + l;
}
log.debug("Using end {}", end);
- items = items.subList(start, end);
+ items = queryItems.subList(start, end);
List<Integer> pgs = new ArrayList<>();
int max = ((int) Math.ceil((double) count / l)) + 1;
@@ -150,6 +115,34 @@ public class ItemList {
}
}
+ public int getCount() {
+ return count;
+ }
+
+ public int getCurrentPage() {
+ return page + 1;
+ }
+
+ public int getEnd() {
+ return end;
+ }
+
+ public Integer[] getPages() {
+ return pages;
+ }
+
+ public String getQuery() {
+ return query;
+ }
+
+ public List<Resource> getItems() {
+ return items;
+ }
+
+ public int getStart() {
+ return start;
+ }
+
public boolean isFirst() {
return page == 0;
}
diff --git
a/reference/src/main/java/org/apache/sling/cms/reference/models/Search.java
b/reference/src/main/java/org/apache/sling/cms/reference/models/Search.java
index 0c94efd..08fa94a 100644
--- a/reference/src/main/java/org/apache/sling/cms/reference/models/Search.java
+++ b/reference/src/main/java/org/apache/sling/cms/reference/models/Search.java
@@ -23,7 +23,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
import javax.jcr.query.Query;
import org.apache.commons.lang3.StringUtils;
@@ -34,6 +35,7 @@ import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.cms.reference.SearchService;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.OSGiService;
+import org.apache.sling.models.annotations.injectorspecific.Self;
import org.apache.sling.models.annotations.injectorspecific.ValueMapValue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,85 +50,48 @@ public class Search {
private static final Logger log = LoggerFactory.getLogger(Search.class);
public static final String TERM_PARAMETER = "q";
+ private final int count;
- @ValueMapValue
- private String basePath;
+ private final int end;
- private int count;
+ private final int page;
- private int end;
+ private final Integer[] pages;
- @ValueMapValue
- private int limit;
+ private final SlingHttpServletRequest request;
- private int page;
+ private final List<Resource> results;
- private Integer[] pages;
+ private final SearchService searchService;
- private SlingHttpServletRequest request;
+ private final int start;
- private List<Resource> results = new ArrayList<>();
+ private final ResourceResolver resolver;
- @OSGiService
- private SearchService searchService;
-
- private int start;
-
- private ResourceResolver resolver;
-
- public Search(SlingHttpServletRequest request) {
+ @Inject
+ public Search(@Self SlingHttpServletRequest request, @ValueMapValue
@Named("limit") int limit,
+ @OSGiService SearchService searchService, @ValueMapValue
@Named("basePath") String basePath) {
this.request = request;
- }
-
- public int getCount() {
- return count;
- }
-
- public int getCurrentPage() {
- return page + 1;
- }
-
- public int getEnd() {
- return end;
- }
-
- public Integer[] getPages() {
- return pages;
- }
-
- public List<Resource> getResults() {
- return results;
- }
-
- public int getStart() {
- return start;
- }
-
- public String getTerm() {
- return request.getParameter(TERM_PARAMETER);
- }
-
- @PostConstruct
- public void init() {
+ this.searchService = searchService;
Set<String> distinct = new HashSet<>();
-
String term =
Text.escapeIllegalXpathSearchChars(request.getParameter(TERM_PARAMETER)).replace("'",
"''");
+ List<Resource> queryResults = new ArrayList<>();
resolver = searchService.getResourceResolver(request);
- String query = "SELECT * FROM [sling:Page] AS p WHERE
[jcr:content/published]=true AND (p.[jcr:content/hideInSitemap] IS NULL OR
p.[jcr:content/hideInSitemap] <> true) AND ISDESCENDANTNODE(p, '"
+ String query = "SELECT * FROM [sling:Page] AS p WHERE
([jcr:content/published]=true OR [jcr:content/sling:published]=true) AND
(p.[jcr:content/hideInSitemap] IS NULL OR p.[jcr:content/hideInSitemap] <>
true) AND ISDESCENDANTNODE(p, '"
+ basePath + "') AND CONTAINS(p.*, '" + term + "') ORDER BY
[jcr:score]";
log.debug("Searching for pages with {} under {} with query: {}", term,
basePath, query);
Iterator<Resource> res = resolver.findResources(query, Query.JCR_SQL2);
while (res.hasNext()) {
Resource result = res.next();
if (!distinct.contains(result.getPath())) {
- results.add(result);
+ queryResults.add(result);
distinct.add(result.getPath());
}
}
- count = results.size();
+ count = queryResults.size();
log.debug("Found {} results", count);
if (StringUtils.isNotBlank(request.getParameter("page")) &&
request.getParameter("page").matches("\\d+")) {
@@ -150,7 +115,7 @@ public class Search {
end = (page * limit) + limit;
}
log.debug("Using end {}", end);
- results = results.subList(start, end);
+ results = queryResults.subList(start, end);
List<Integer> pgs = new ArrayList<>();
int max = ((int) Math.ceil((double) count / limit)) + 1;
@@ -163,6 +128,34 @@ public class Search {
}
}
+ public int getCount() {
+ return count;
+ }
+
+ public int getCurrentPage() {
+ return page + 1;
+ }
+
+ public int getEnd() {
+ return end;
+ }
+
+ public Integer[] getPages() {
+ return pages;
+ }
+
+ public List<Resource> getResults() {
+ return results;
+ }
+
+ public int getStart() {
+ return start;
+ }
+
+ public String getTerm() {
+ return request.getParameter(TERM_PARAMETER);
+ }
+
/**
* This is a horrible hack to close the resource resolver used for
retrieving
* the search results
diff --git
a/reference/src/test/java/org/apache/sling/cms/reference/form/impl/FormHandlerTest.java
b/reference/src/test/java/org/apache/sling/cms/reference/form/impl/FormHandlerTest.java
index 030081d..f5d211c 100644
---
a/reference/src/test/java/org/apache/sling/cms/reference/form/impl/FormHandlerTest.java
+++
b/reference/src/test/java/org/apache/sling/cms/reference/form/impl/FormHandlerTest.java
@@ -29,6 +29,7 @@ import javax.servlet.http.HttpServletResponse;
import com.google.common.collect.ImmutableMap;
import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.resource.Resource;
import org.apache.sling.cms.reference.forms.FormException;
import org.apache.sling.cms.reference.forms.FormRequest;
import org.apache.sling.cms.reference.forms.impl.FormHandler;
@@ -60,11 +61,10 @@ public class FormHandlerTest {
.put("singleselect", "Hello World!").put("anotherkey",
"Hello World!").put("money", "123")
.put("patternfield", "123").put("double",
"2.7").put("integer", "2")
.put("datefield", "2019-02-02").build());
+ context.currentResource(Mockito.mock(Resource.class));
- formRequest = new FormRequestImpl(context.request());
-
- formRequest
- .setFieldHandlers(Arrays.asList(new SelectionHandler(), new
TextareaHandler(), new TextfieldHandler()));
+ formRequest = new FormRequestImpl(context.request(), null,
+ Arrays.asList(new SelectionHandler(), new TextareaHandler(),
new TextfieldHandler()));
final SendEmailAction sendEmailAction = new SendEmailAction();
mailService = Mockito.mock(MailService.class);
@@ -84,7 +84,6 @@ public class FormHandlerTest {
public void testPost() throws ServletException, IOException, FormException
{
context.request().setResource(context.resourceResolver().getResource("/form/jcr:content/container/form"));
- formRequest.init();
formHandler.service(context.request(), context.response());
Mockito.verify(mailService).sendMessage(Mockito.any());
@@ -95,7 +94,6 @@ public class FormHandlerTest {
context.request()
.setResource(context.resourceResolver().getResource("/form-no-actions/jcr:content/container/form"));
- formRequest.init();
formHandler.service(context.request(), context.response());
diff --git
a/reference/src/test/java/org/apache/sling/cms/reference/form/impl/FormRequestImplTest.java
b/reference/src/test/java/org/apache/sling/cms/reference/form/impl/FormRequestImplTest.java
index c4299b1..9287896 100644
---
a/reference/src/test/java/org/apache/sling/cms/reference/form/impl/FormRequestImplTest.java
+++
b/reference/src/test/java/org/apache/sling/cms/reference/form/impl/FormRequestImplTest.java
@@ -52,11 +52,8 @@ public class FormRequestImplTest {
.put("patternfield", "123").put("double",
"2.7").put("integer", "2")
.put("datefield", "2019-02-02").build());
- formRequest = new FormRequestImpl(context.request());
-
- formRequest
- .setFieldHandlers(Arrays.asList(new SelectionHandler(), new
TextareaHandler(), new TextfieldHandler()));
-
+ formRequest = new FormRequestImpl(context.request(), null,
+ Arrays.asList(new SelectionHandler(), new TextareaHandler(),
new TextfieldHandler()));
formRequest.initFields();
}
diff --git
a/reference/src/test/java/org/apache/sling/cms/reference/form/impl/actions/SendEmailActionTest.java
b/reference/src/test/java/org/apache/sling/cms/reference/form/impl/actions/SendEmailActionTest.java
index 81bdd08..a6b4ef7 100644
---
a/reference/src/test/java/org/apache/sling/cms/reference/form/impl/actions/SendEmailActionTest.java
+++
b/reference/src/test/java/org/apache/sling/cms/reference/form/impl/actions/SendEmailActionTest.java
@@ -70,7 +70,7 @@ public class SendEmailActionTest {
@Test
public void testHandleForm() throws FormException {
- final FormRequest formRequest = new FormRequestImpl(context.request());
+ final FormRequest formRequest = new FormRequestImpl(context.request(),
null, null);
final FormActionResult result = action
.handleForm(resolver.getResource("/form/jcr:content/container/form/actions/sendemail"),
formRequest);