[ 
https://issues.apache.org/jira/browse/SLING-7768?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17022295#comment-17022295
 ] 

Bertrand Delacretaz commented on SLING-7768:
--------------------------------------------

To nitpick, I ran a Jacoco coverage report and it looks like the following two 
sections of the {{Interpolator}} code are not covered by tests. If they are 
useful it would be good to make sure they are, or remove them if not useful.

{code}
    if (count > 0) {
                LOGGER.trace("No End ({}) found in: '{}' (count: '{}')", END, 
result, count);
                // no matching end found -> end
                start = result.length();
                continue;
            }
{code}

{code}
  if (!(replacement instanceof String)) {
                    if (start == 0 && index == result.length()) {
                        return replacement;
                    }
                }
{code}

Sorry if I'm being picky...but I suppose it's much easier to add those tests 
now than to find out later that they are missing.

> Add String Interpolation support to /etc/map
> --------------------------------------------
>
>                 Key: SLING-7768
>                 URL: https://issues.apache.org/jira/browse/SLING-7768
>             Project: Sling
>          Issue Type: Improvement
>          Components: ResourceResolver
>         Environment: Sling 11-SNAPSHOT, JDK 1.8
>            Reporter: Andreas Schaefer
>            Priority: Major
>         Attachments: Screenshot 2018-07-06 11.41.58.png, Screenshot 
> 2018-07-06 11.42.41.png, Screenshot 2018-07-06 11.43.34.png
>
>
> Having worked on migrations of a Sling derivate Ruben & I ran into issues 
> where the /etc/map would map to production instead of testing environment.
>  Many big customer have extensive /etc/maps and also many different 
> environments like dev, qa, staging, prod etc.
>  It would be great to have a tool where for example items like the host name 
> or external links in /etc/map could be configured outside so that just one 
> entry has to adjusted rather than creating a full copy of the /etc/map tree.
>   
>  Example:
>   
>  /etc/map/http/{{{{phv.fq.host.name}}}}.8080
>   
>  Placeholder provides:
>  DEV: phv.fq.host.name=localhost
>  QA: phv.fq.host.name=qa.author.acme.com
>  STAGING: 
> phv.fq.host.name=[staging.author.acme.com|http://staging.author.acme.com/]
>  PROD: phv.fq.host.name=[acme.com|http://acme.com/]
>   
>  At runtime these are the resolved values:
>  DEV: http/localhost.8080
>  QA: http/qa.author.acme.com.8080
>  STAGING: http/[staging.author.acme.com|http://staging.author.acme.com/].8080
>  PROD: http/[acme.com|http://acme.com/].8080
>   
>  Not only does that make it easier and faster to create new test environments 
> but it also cuts down on the chance of copy-n-paste errors.
>   
>  I have a working POC with an PlaceholderProvider OSGi service and an 
> enhanced MapEntries that resolved any placeholders if found.
>   
>  Attached are 3 screenshots:
>  1. OSGi Placeholder Provider Configuration
>  2. /etc/map (Composum)
>  3. Result of [http://andreass.local:8080/] call



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to