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);
 

Reply via email to