#
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you 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.
#
#
[feature name=sling]

[artifacts]
    org.apache.sling/org.apache.sling.scripting.api/2.2.0
    org.apache.sling/org.apache.sling.scripting.core/2.0.50
    org.apache.sling/org.apache.sling.scripting.javascript/3.0.2
    org.apache.sling/org.apache.sling.scripting.jsp/2.3.2
    org.apache.sling/org.apache.sling.scripting.jsp-api/1.0.0
    org.apache.sling/org.apache.sling.scripting.el-api/1.0.0
    org.apache.sling/org.apache.sling.scripting.jsp.taglib/2.2.6
    org.apache.sling/org.apache.sling.scripting.sightly/1.0.42
    org.apache.sling/org.apache.sling.scripting.sightly.compiler/1.0.14
    org.apache.sling/org.apache.sling.scripting.sightly.compiler.java/1.0.14
    org.apache.sling/org.apache.sling.scripting.sightly.js.provider/1.0.24
    org.apache.sling/org.apache.sling.scripting.sightly.models.provider/1.0.6
    org.apache.sling/org.apache.sling.scripting.sightly.repl/1.0.4
    org.apache.servicemix.bundles/org.apache.servicemix.bundles.rhino/1.7.7.1_1

[:repoinit]
    #<<< SLING-5848 - Define service user and ACLs for Scripting
    create service user sling-scripting

    create path (sling:Folder) /libs
    create path (sling:Folder) /apps

    set ACL for sling-scripting
        deny    jcr:all     on /
        allow   jcr:read    on /libs,/apps
    end
    # SLING-5848 - Define service user and ACLs for Scripting >>>


[configurations]
    # configure the ScriptCache for scripts used by org.apache.sling.scripting.sightly.js.provider
    org.apache.sling.scripting.core.impl.ScriptCacheImpl
        org.apache.sling.scripting.cache.additional_extensions=["js"]

    org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-scripting
        user.mapping=[
            "org.apache.sling.scripting.core\=sling-scripting",
            "org.apache.sling.scripting.sightly.js.provider\=sling-scripting",
        ]
