 = "dropDownQueryLanguage";
    final String PN_DROP_DOWN_QUERY = "dropDownQuery";
    final String PN_ALLOW_PROPERTY_NAMES = "allowedPropertyNames";

    @Reference
    private DataSourceBuilder dataSourceBuilder;

    @Reference
    private QueryHelper queryHelper;

    @Override
    protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException {

        final ResourceResolver resolver = request.getResourceResolver();
        final ValueMap properties = request.getResource().getValueMap();

        final List<DataSourceOption> options = new ArrayList<>();

        try {
            // The query language property
            final String queryLanguage = properties.get(PN_DROP_DOWN_QUERY_LANGUAGE, JCR_SQL2);
            // The query statement (this must match the queryLanguage else the query will fail)
            final String queryStatement = properties.get(PN_DROP_DOWN_QUERY, String.class);
            // The property names to extract; these are specified as a String[] property<commit_msg>#codeclimate<commit_after>/*
 * #%L
 * ACS AEM Commons Bundle
 * %%
 * Copyright (C) 2018 Adobe
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */
package com.adobe.acs.commons.reports.internal.datasources;

import com.adobe.acs.commons.util.QueryHelper;
import com.adobe.acs.commons.wcm.datasources.DataSourceBuilder;
import com.adobe.acs.commons.wcm.datasources.DataSourceOption;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.servlets.HttpConstants;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Nonnull;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static javax.jcr.query.Query.JCR_SQL2;

@Component(
        service = Servlet.class,
        property = {
                "sling.servlet.resourceTypes=acs-commons/components/utilities/report-builder/data-sources/dynamic-select",
                "sling.servlet.methods=" + HttpConstants.METHOD_GET,
        }
)
public class DynamicSelectDataSource extends SlingSafeMethodsServlet {

    private static final Logger log = LoggerFactory.getLogger(DynamicSelectDataSource.class);

    final String PN_DROP_DOWN_QUERY_LANGUAGE = "dropDownQueryLanguage";
    final String PN_DROP_DOWN_QUERY = "dropDownQuery";
    final String PN_ALLOW_PROPERTY_NAMES = "allowedPropertyNames";

    @Reference
    private DataSourceBuilder dataSourceBuilder;

    @Reference
    private QueryHelper queryHelper;

    @Override
    protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException {

        final ResourceResolver resolver = request.getResourceResolver();
        final ValueMap properties = request.getResource().getValueMap();

        final List<DataSourceOption> options = new ArrayList<>();

        try {
            // The query language property
            final String queryLanguage = properties.get(PN_DROP_DOWN_QUERY_LANGUAGE, JCR_SQL2);
            // The query statement (this must match the queryLanguage else the query will fail)
            final String queryStatement = properties.get(PN_DROP_DOWN_QUERY, String.class);
            // The property names to extract; these are specified as a String[] propertyIf you have a story about Latent Heat as described here, or views on how to deal with it, do please share them with us: click here.
Latent heat occurs when your body fails to clear a 'pathogenic factor'.
What does this word ‘pathogenic’ mean? Illness-generating.
In orthodox medicine pathogenic factors are viruses and bacteria, toxins and poisons, trauma and, to a certain extent and depending on whether your doctor agrees with the viewpoint, stress and emotional factors like grief and anger.
In Chinese Medicine there are many causes of disease, both external, like invasion by 'wind-heat' or 'wind-cold' (roughly equivalent to viruses and bacteria) and trauma, and internal (including emotional factors).
To use some more of the expressions in Chinese Medicine, where an individual’s 'Kidney qi' is plentiful, it will produce adequate 'Defensive energy', and if his 'Lung qi' is working properly it will ‘spread’ that Defensive qi properly over the surface of the body.
That more or less means that where your health's constitution is strong, it will have the potential to defend itself, and if your metabolism is working properly, your body will deploy that defence where needed.
The Chinese terms like 'Kidney Qi' etc are fairly precise and help the acupuncturist decide exactly how to apply treatment. By the way, you could have weak Kidney Qi and yet have perfectly healthy kidneys! Kidney energy is only partly related to your kidney organs.
When attacked by a pathogenic factor a healthy body will vigorously defend itself, and after an acute episode it will eject the pathogenic factor from the body.
At that point, given rest and time to recuperate, the body returns to equilibrium and health.
However, what if your body’s defensive energy is not up to a strong defence?
Here the pathogenic factor penetrates beyond the initial defence line and provokes symptoms at a deeper level.
For example, someone catches a cold but instead of developing a fever, (for example with shivers, obstructed nose with phlegm, sore throat etc) his body fails to keep the disease at that level but lets it sink in further. He starts wheezing asthmatically.
From the cold and throat, the first line of defence, the barrier has now moved inwards to the Lungs. This is harder to cure without treatment whereas had the ‘cold’ been kept in the nose and throat, normally the body would have repelled the invader after a few days.
Alternatively, the invading pathogenic factor continues to cause mild ongoing symptoms that weaken the body. See ‘'remaining pathogenic factor' for more about this.
However, sometimes the invader arrives and takes up residence without your immune system (your resident defence force) apparently knowing about it.
This is like members of a terrorist cell that enter a country and establish themselves as normal citizens. Living unobtrusively while they await the call to arms, they prepare for action. Because the country’s police and intelligence agencies are unaware of them, no alert is raised.
It’s also like a house where the occupants aren’t aware that they are harbouring an arsonist who, given the right stimulus, will set the place alight.
How Does this invasion happen?
There are various ways this ‘invasion’ can happen.
As explained above, the first is when, for instance, a pathogenic factor like a ‘cold’ is caught but fails to materialise: there is an invasion of wind-heat or wind-cold that the body fails at the time to fight off with strong reactions like shivering and fever.
Another is when a series of emotional ‘blows’ are absorbed but not repulsed properly. For example, perhaps the individual has to live through quite impossible circumstances that build up an inner rage which, though controlled at the time, awaits a stimulus to release it.
Or perhaps a series of deaths casts the individual down badly. He continues as normal for a while until a new trigger of some kind releases them and they emerge as heat, inappropriate behaviour or illness.
Think of it like a compost heap which, long-forgotten, has dried out.
But now it's summer,