# 
# 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.
# 
# The :boot feature contains all things to bootstrap the installation.
[feature name=:boot]

[variables]
  slf4j.version=1.7.25

# additional entries for sling.properties
# ---------------------------------------
# oak_tar and oak_mongo run modes are mutually exclusive,
# and cannot be changed after the first startup
[settings]
  localIndexDir=${sling.home}/repository/index
  repository.home=${sling.home}/repository
  sling.run.mode.install.options=oak_tar,oak_mongo

[artifacts]
  org.apache.aries/org.apache.aries.util/1.1.3
  org.apache.commons/commons-lang3/3.9
  org.apache.felix/org.apache.felix.configadmin/1.9.16
  org.apache.felix/org.apache.felix.converter/1.0.14
  org.apache.felix/org.apache.felix.eventadmin/1.5.0
  org.apache.geronimo.specs/geronimo-annotation_1.3_spec/1.1
# dependency with javax.inject - required for Sling Models (SLING-4710)
  org.apache.geronimo.specs/geronimo-atinject_1.0_spec/1.1
  org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/1.1.3
  org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/2.2.11_1
  org.apache.servicemix.bundles/org.apache.servicemix.bundles.saaj-impl/1.3.23_2
  org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.2/2.9.0
  org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-2.2/2.9.0
  org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/2.8.0
  org.apache.sling/org.apache.sling.commons.johnzon/1.2.2
  org.apache.sling/org.apache.sling.commons.log/5.1.10
  org.apache.sling/org.apache.sling.commons.logservice/1.1.0
  org.apache.sling/org.apache.sling.commons.osgi/2.4.0
  org.apache.sling/org.apache.sling.installer.core/3.11.2
  org.apache.sling/org.apache.sling.installer.factory.configuration/1.3.2
  org.apache.sling/org.apache.sling.installer.provider.file/1.2.2
  org.apache.sling/org.apache.sling.javax.activation/0.1.0
  org.apache.sling/org.apache.sling.launchpad.installer/1.2.2
  org.apache.sling/org.apache.sling.settings/1.3.10
  org.jvnet.staxex/stax-ex/1.7.6
  org.osgi/org.osgi.service.log/1.4.0
  org.osgi/org.osgi.util.function/1.1.0
  org.osgi/org.osgi.util.promise/1.1.1
  org.osgi/org.osgi.util.pushstream/1.0.1
  org.slf4j/jcl-over-slf4j/1.7.25
  org.slf4j/log4j-over-slf4j/1.7.25
  org.slf4j/slf4j-api/1.7.25

# 
# 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.
# 
# The :launchpad feature defines Sling's launchpad version
# Only a single artifact is allowed within this feature.
[feature name=:launchpad]

[settings]
  org.osgi.framework.system.packages=org.osgi.framework;version="1.9",org.osgi.framework.dto;version="1.8";uses:="org.osgi.dto",org.osgi.framework.hooks.bundle;version="1.1";uses:="org.osgi.framework",org.osgi.framework.hooks.resolver;version="1.0";uses:="org.osgi.framework.wiring",org.osgi.framework.hooks.service;version="1.1";uses:="org.osgi.framework",org.osgi.framework.hooks.weaving;version="1.1";uses:="org.osgi.framework.wiring",org.osgi.framework.launch;version="1.2";uses:="org.osgi.framework",org.osgi.framework.namespace;version="1.1";uses:="org.osgi.resource",org.osgi.framework.startlevel;version="1.0";uses:="org.osgi.framework",org.osgi.framework.startlevel.dto;version="1.0";uses:="org.osgi.dto",org.osgi.framework.wiring;version="1.2";uses:="org.osgi.framework,org.osgi.resource",org.osgi.framework.wiring.dto;version="1.3";uses:="org.osgi.dto,org.osgi.resource.dto",org.osgi.resource;version="1.0",org.osgi.resource.dto;version="1.0";uses:="org.osgi.dto",org.osgi.service.packageadmin;version="1.2";uses:="org.osgi.framework",org.osgi.service.startlevel;version="1.1";uses:="org.osgi.framework",org.osgi.service.url;version="1.0",org.osgi.service.resolver;version="1.1";uses:="org.osgi.resource",org.osgi.dto;version="1.1",org.osgi.util.tracker;version="1.5.2";uses:="org.osgi.framework"{dollar}{sling.jre-{dollar}{java.specification.version}}{dollar}{sling.jre-{dollar}{felix.detect.jpms}}
  sling.jpms.java.xml={dollar}{sling.jre.java.xml},javax.xml.catalog;uses:="javax.xml.namespace";version="1.0.0"
  sling.jre-1.8=,java.applet;version="{dollar}{felix.detect.java.version}",java.awt;version="{dollar}{felix.detect.java.version}",java.awt.color;version="{dollar}{felix.detect.java.version}",java.awt.datatransfer;version="{dollar}{felix.detect.java.version}",java.awt.dnd;version="{dollar}{felix.detect.java.version}",java.awt.event;version="{dollar}{felix.detect.java.version}",java.awt.font;version="{dollar}{felix.detect.java.version}",java.awt.geom;version="{dollar}{felix.detect.java.version}",java.awt.im;version="{dollar}{felix.detect.java.version}",java.awt.im.spi;version="{dollar}{felix.detect.java.version}",java.awt.image;version="{dollar}{felix.detect.java.version}",java.awt.image.renderable;version="{dollar}{felix.detect.java.version}",java.awt.print;version="{dollar}{felix.detect.java.version}",java.beans;version="{dollar}{felix.detect.java.version}",java.beans.beancontext;version="{dollar}{felix.detect.java.version}",java.io;version="{dollar}{felix.detect.java.version}",java.lang;version="{dollar}{felix.detect.java.version}",java.lang.annotation;version="{dollar}{felix.detect.java.version}",java.lang.instrument;version="{dollar}{felix.detect.java.version}",java.lang.invoke;version="{dollar}{felix.detect.java.version}",java.lang.management;version="{dollar}{felix.detect.java.version}",java.lang.ref;version="{dollar}{felix.detect.java.version}",java.lang.reflect;version="{dollar}{felix.detect.java.version}",java.math;version="{dollar}{felix.detect.java.version}",java.net;version="{dollar}{felix.detect.java.version}",java.nio;version="{dollar}{felix.detect.java.version}",java.nio.channels;version="{dollar}{felix.detect.java.version}",java.nio.channels.spi;version="{dollar}{felix.detect.java.version}",java.nio.charset;version="{dollar}{felix.detect.java.version}",java.nio.charset.spi;version="{dollar}{felix.detect.java.version}",java.nio.file;version="{dollar}{felix.detect.java.version}",java.nio.file.attribute;version="{dollar}{felix.detect.java.version}",java.nio.file.spi;version="{dollar}{felix.detect.java.version}",java.rmi;version="{dollar}{felix.detect.java.version}",java.rmi.activation;version="{dollar}{felix.detect.java.version}",java.rmi.dgc;version="{dollar}{felix.detect.java.version}",java.rmi.registry;version="{dollar}{felix.detect.java.version}",java.rmi.server;version="{dollar}{felix.detect.java.version}",java.security;version="{dollar}{felix.detect.java.version}",java.security.acl;version="{dollar}{felix.detect.java.version}",java.security.cert;version="{dollar}{felix.detect.java.version}",java.security.interfaces;version="{dollar}{felix.detect.java.version}",java.security.spec;version="{dollar}{felix.detect.java.version}",java.sql;version="{dollar}{felix.detect.java.version}",java.text;version="{dollar}{felix.detect.java.version}",java.text.spi;version="{dollar}{felix.detect.java.version}",java.time;version="{dollar}{felix.detect.java.version}",java.time.chrono;version="{dollar}{felix.detect.java.version}",java.time.format;version="{dollar}{felix.detect.java.version}",java.time.temporal;version="{dollar}{felix.detect.java.version}",java.time.zone;version="{dollar}{felix.detect.java.version}",java.util;version="{dollar}{felix.detect.java.version}",java.util.concurrent;version="{dollar}{felix.detect.java.version}",java.util.concurrent.atomic;version="{dollar}{felix.detect.java.version}",java.util.concurrent.locks;version="{dollar}{felix.detect.java.version}",java.util.function;version="{dollar}{felix.detect.java.version}",java.util.jar;version="{dollar}{felix.detect.java.version}",java.util.logging;version="{dollar}{felix.detect.java.version}",java.util.prefs;version="{dollar}{felix.detect.java.version}",java.util.regex;version="{dollar}{felix.detect.java.version}",java.util.spi;version="{dollar}{felix.detect.java.version}",java.util.stream;version="{dollar}{felix.detect.java.version}",java.util.zip;version="{dollar}{felix.detect.java.version}",javax.accessibility;uses:="javax.swing.text";version="{dollar}{felix.detect.java.version}",javax.annotation.processing;uses:="javax.lang.model,javax.lang.model.element,javax.lang.model.util,javax.tools";version="{dollar}{felix.detect.java.version}",javax.crypto;uses:="javax.crypto.spec,javax.security.auth";version="{dollar}{felix.detect.java.version}",javax.crypto.interfaces;uses:="javax.crypto,javax.crypto.spec";version="{dollar}{felix.detect.java.version}",javax.crypto.spec;uses:="javax.crypto";version="{dollar}{felix.detect.java.version}",javax.imageio;uses:="javax.imageio.event,javax.imageio.metadata,javax.imageio.spi,javax.imageio.stream";version="{dollar}{felix.detect.java.version}",javax.imageio.event;uses:="javax.imageio";version="{dollar}{felix.detect.java.version}",javax.imageio.metadata;uses:="javax.imageio,org.w3c.dom";version="{dollar}{felix.detect.java.version}",javax.imageio.plugins.bmp;uses:="javax.imageio";version="{dollar}{felix.detect.java.version}",javax.imageio.plugins.jpeg;uses:="javax.imageio";version="{dollar}{felix.detect.java.version}",javax.imageio.spi;uses:="javax.imageio,javax.imageio.metadata,javax.imageio.stream";version="{dollar}{felix.detect.java.version}",javax.imageio.stream;uses:="javax.imageio";version="{dollar}{felix.detect.java.version}",javax.lang.model;uses:="javax.lang.model.element";version="{dollar}{felix.detect.java.version}",javax.lang.model.element;uses:="javax.lang.model,javax.lang.model.type";version="{dollar}{felix.detect.java.version}",javax.lang.model.type;uses:="javax.lang.model,javax.lang.model.element";version="{dollar}{felix.detect.java.version}",javax.lang.model.util;uses:="javax.annotation.processing,javax.lang.model,javax.lang.model.element,javax.lang.model.type";version="{dollar}{felix.detect.java.version}",javax.management;uses:="javax.management.loading,javax.management.openmbean";version="{dollar}{felix.detect.java.version}",javax.management.loading;uses:="javax.management";version="{dollar}{felix.detect.java.version}",javax.management.modelmbean;uses:="javax.management,javax.management.loading";version="{dollar}{felix.detect.java.version}",javax.management.monitor;uses:="javax.management";version="{dollar}{felix.detect.java.version}",javax.management.openmbean;uses:="javax.management";version="{dollar}{felix.detect.java.version}",javax.management.relation;uses:="javax.management";version="{dollar}{felix.detect.java.version}",javax.management.remote;uses:="javax.management,javax.security.auth";version="{dollar}{felix.detect.java.version}",javax.management.remote.rmi;uses:="javax.management,javax.management.loading,javax.management.remote,javax.naming,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.security.auth,org.omg.CORBA,org.omg.CORBA.portable,org.omg.CORBA_2_3.portable";version="{dollar}{felix.detect.java.version}",javax.management.timer;uses:="javax.management";version="{dollar}{felix.detect.java.version}",javax.naming;uses:="javax.naming.spi";version="{dollar}{felix.detect.java.version}",javax.naming.directory;uses:="javax.naming";version="{dollar}{felix.detect.java.version}",javax.naming.event;uses:="javax.naming,javax.naming.directory";version="{dollar}{felix.detect.java.version}",javax.naming.ldap;uses:="javax.naming,javax.naming.directory,javax.naming.event,javax.net.ssl";version="{dollar}{felix.detect.java.version}",javax.naming.spi;uses:="javax.naming,javax.naming.directory";version="{dollar}{felix.detect.java.version}",javax.net;version="{dollar}{felix.detect.java.version}",javax.net.ssl;uses:="javax.net,javax.security.auth.x500,javax.security.cert";version="{dollar}{felix.detect.java.version}",javax.print;uses:="javax.print.attribute,javax.print.attribute.standard,javax.print.event";version="{dollar}{felix.detect.java.version}",javax.print.attribute;version="{dollar}{felix.detect.java.version}",javax.print.attribute.standard;uses:="javax.print.attribute";version="{dollar}{felix.detect.java.version}",javax.print.event;uses:="javax.print,javax.print.attribute";version="{dollar}{felix.detect.java.version}",javax.rmi.ssl;uses:="javax.net,javax.net.ssl";version="{dollar}{felix.detect.java.version}",javax.script;version="{dollar}{felix.detect.java.version}",javax.security.auth;version="{dollar}{felix.detect.java.version}",javax.security.auth.callback;version="{dollar}{felix.detect.java.version}",javax.security.auth.kerberos;uses:="javax.crypto,javax.security.auth";version="{dollar}{felix.detect.java.version}",javax.security.auth.login;uses:="javax.security.auth,javax.security.auth.callback";version="{dollar}{felix.detect.java.version}",javax.security.auth.spi;uses:="javax.security.auth,javax.security.auth.callback,javax.security.auth.login";version="{dollar}{felix.detect.java.version}",javax.security.auth.x500;uses:="javax.security.auth";version="{dollar}{felix.detect.java.version}",javax.security.cert;version="{dollar}{felix.detect.java.version}",javax.security.sasl;uses:="javax.security.auth.callback";version="{dollar}{felix.detect.java.version}",javax.sound.midi;uses:="javax.sound.midi.spi";version="{dollar}{felix.detect.java.version}",javax.sound.midi.spi;uses:="javax.sound.midi";version="{dollar}{felix.detect.java.version}",javax.sound.sampled;uses:="javax.sound.sampled.spi";version="{dollar}{felix.detect.java.version}",javax.sound.sampled.spi;uses:="javax.sound.sampled";version="{dollar}{felix.detect.java.version}",javax.sql;uses:="javax.transaction.xa";version="{dollar}{felix.detect.java.version}",javax.sql.rowset;uses:="javax.sql,javax.sql.rowset.serial,javax.sql.rowset.spi";version="{dollar}{felix.detect.java.version}",javax.sql.rowset.serial;uses:="javax.sql.rowset";version="{dollar}{felix.detect.java.version}",javax.sql.rowset.spi;uses:="javax.naming,javax.sql,javax.sql.rowset";version="{dollar}{felix.detect.java.version}",javax.swing;uses:="javax.accessibility,javax.print,javax.print.attribute,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.tree";version="{dollar}{felix.detect.java.version}",javax.swing.border;uses:="javax.swing";version="{dollar}{felix.detect.java.version}",javax.swing.colorchooser;uses:="javax.accessibility,javax.swing,javax.swing.border,javax.swing.event,javax.swing.text";version="{dollar}{felix.detect.java.version}",javax.swing.event;uses:="javax.swing,javax.swing.table,javax.swing.text,javax.swing.tree,javax.swing.undo";version="{dollar}{felix.detect.java.version}",javax.swing.filechooser;uses:="javax.swing";version="{dollar}{felix.detect.java.version}",javax.swing.plaf;uses:="javax.accessibility,javax.swing,javax.swing.border,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="{dollar}{felix.detect.java.version}",javax.swing.plaf.basic;uses:="javax.accessibility,javax.sound.sampled,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.tree";version="{dollar}{felix.detect.java.version}",javax.swing.plaf.metal;uses:="javax.swing,javax.swing.border,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.text,javax.swing.tree";version="{dollar}{felix.detect.java.version}",javax.swing.plaf.multi;uses:="javax.accessibility,javax.swing,javax.swing.filechooser,javax.swing.plaf,javax.swing.text,javax.swing.tree";version="{dollar}{felix.detect.java.version}",javax.swing.plaf.nimbus;uses:="javax.swing,javax.swing.border,javax.swing.plaf,javax.swing.plaf.synth";version="{dollar}{felix.detect.java.version}",javax.swing.plaf.synth;uses:="javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.table,javax.swing.text,javax.swing.tree,javax.xml.parsers,org.xml.sax,org.xml.sax.helpers";version="{dollar}{felix.detect.java.version}",javax.swing.table;uses:="javax.accessibility,javax.swing,javax.swing.border,javax.swing.event,javax.swing.plaf";version="{dollar}{felix.detect.java.version}",javax.swing.text;uses:="javax.accessibility,javax.print,javax.print.attribute,javax.swing,javax.swing.event,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.text.html,javax.swing.tree,javax.swing.undo";version="{dollar}{felix.detect.java.version}",javax.swing.text.html;uses:="javax.accessibility,javax.swing,javax.swing.border,javax.swing.event,javax.swing.plaf,javax.swing.text,javax.swing.undo";version="{dollar}{felix.detect.java.version}",javax.swing.text.html.parser;uses:="javax.swing.text,javax.swing.text.html";version="{dollar}{felix.detect.java.version}",javax.swing.text.rtf;uses:="javax.swing.text";version="{dollar}{felix.detect.java.version}",javax.swing.tree;uses:="javax.swing,javax.swing.border,javax.swing.event,javax.swing.plaf,javax.swing.plaf.basic";version="{dollar}{felix.detect.java.version}",javax.swing.undo;uses:="javax.swing,javax.swing.event";version="{dollar}{felix.detect.java.version}",javax.tools;uses:="javax.annotation.processing,javax.lang.model,javax.lang.model.element";version="{dollar}{felix.detect.java.version}",javax.transaction.xa;version="{dollar}{felix.detect.java.version}",org.ietf.jgss;version="{dollar}{felix.detect.java.version}"{dollar}{sling.jre.java.xml},javax.xml.crypto;uses:="javax.xml.crypto.dsig.keyinfo";version="{dollar}{felix.detect.java.version}",javax.xml.crypto.dom;uses:="javax.xml.crypto,org.w3c.dom";version="{dollar}{felix.detect.java.version}",javax.xml.crypto.dsig;uses:="javax.xml.crypto,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec";version="{dollar}{felix.detect.java.version}",javax.xml.crypto.dsig.dom;uses:="javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,org.w3c.dom";version="{dollar}{felix.detect.java.version}",javax.xml.crypto.dsig.keyinfo;uses:="javax.xml.crypto";version="{dollar}{felix.detect.java.version}",javax.xml.crypto.dsig.spec;uses:="javax.xml.crypto";version="{dollar}{felix.detect.java.version}"
  sling.jre-jpms={dollar}{felix.jpms.java.base}{dollar}{felix.jpms.java.compiler}{dollar}{felix.jpms.java.datatransfer}{dollar}{felix.jpms.java.desktop}{dollar}{felix.jpms.java.instrument}{dollar}{felix.jpms.java.logging}{dollar}{felix.jpms.java.management}{dollar}{felix.jpms.java.management.rmi}{dollar}{felix.jpms.java.naming}{dollar}{felix.jpms.java.net.http}{dollar}{felix.jpms.java.prefs}{dollar}{felix.jpms.java.rmi}{dollar}{felix.jpms.java.scripting}{dollar}{felix.jpms.java.se}{dollar}{felix.jpms.java.security.jgss}{dollar}{felix.jpms.java.security.sasl}{dollar}{felix.jpms.java.sql}{dollar}{felix.jpms.java.sql.rowset}{dollar}{felix.jpms.java.transaction.xa}{dollar}{sling.jpms.{dollar}{felix.detect.jpms.java.xml}}{dollar}{felix.jpms.java.xml.crypto}{dollar}{felix.jpms.jdk.xml.dom}
  sling.jre.java.xml=,javax.xml;version="2.1.0",javax.xml.datatype;uses:="javax.xml.namespace";version="2.1.0",javax.xml.namespace;version="2.1.0",javax.xml.parsers;uses:="javax.xml.validation,org.w3c.dom,org.xml.sax,org.xml.sax.helpers";version="2.1.0",javax.xml.stream;uses:="javax.xml.namespace,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform";version="1.0.0",javax.xml.stream.events;uses:="javax.xml.namespace,javax.xml.stream";version="1.0.0",javax.xml.stream.util;uses:="javax.xml.namespace,javax.xml.stream,javax.xml.stream.events";version="1.0.0",javax.xml.transform;version="2.1.0",javax.xml.transform.dom;uses:="javax.xml.transform,org.w3c.dom";version="2.1.0",javax.xml.transform.sax;uses:="javax.xml.transform,javax.xml.transform.stream,org.xml.sax,org.xml.sax.ext";version="2.1.0",javax.xml.transform.stax;uses:="javax.xml.stream,javax.xml.stream.events,javax.xml.transform";version="2.1.0",javax.xml.transform.stream;uses:="javax.xml.transform";version="2.1.0",javax.xml.validation;uses:="javax.xml.transform,javax.xml.transform.stream,org.w3c.dom,org.w3c.dom.ls,org.xml.sax";version="2.1.0",javax.xml.xpath;uses:="javax.xml.namespace,org.xml.sax";version="2.1.0",org.w3c.dom;version="{dollar}{felix.detect.java.version}",org.w3c.dom.bootstrap;uses:="org.w3c.dom";version="{dollar}{felix.detect.java.version}",org.w3c.dom.css;uses:="org.w3c.dom,org.w3c.dom.stylesheets,org.w3c.dom.views";version="{dollar}{felix.detect.java.version}",org.w3c.dom.events;uses:="org.w3c.dom,org.w3c.dom.views";version="{dollar}{felix.detect.java.version}",org.w3c.dom.html;uses:="org.w3c.dom";version="{dollar}{felix.detect.java.version}",org.w3c.dom.ls;uses:="org.w3c.dom,org.w3c.dom.events";version="{dollar}{felix.detect.java.version}",org.w3c.dom.ranges;uses:="org.w3c.dom";version="{dollar}{felix.detect.java.version}",org.w3c.dom.stylesheets;uses:="org.w3c.dom";version="{dollar}{felix.detect.java.version}",org.w3c.dom.traversal;uses:="org.w3c.dom";version="{dollar}{felix.detect.java.version}",org.w3c.dom.views;version="{dollar}{felix.detect.java.version}",org.w3c.dom.xpath;uses:="org.w3c.dom";version="{dollar}{felix.detect.java.version}",org.xml.sax;version="{dollar}{felix.detect.java.version}",org.xml.sax.ext;uses:="org.xml.sax,org.xml.sax.helpers";version="{dollar}{felix.detect.java.version}",org.xml.sax.helpers;uses:="org.xml.sax";version="{dollar}{felix.detect.java.version}"

[artifacts]
  org.apache.sling/org.apache.sling.launchpad.base/6.0.2-2.6.36

# 
# 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=composum-nodes]

[variables]
  composum.nodes.version=1.11.5

[artifacts startLevel=20]
  com.composum.sling.core/composum-sling-core-commons/1.11.5
  com.composum.sling.core/composum-sling-core-console/1.11.5
  com.composum.sling.core/composum-sling-core-jslibs/1.11.5
  com.composum.sling.core/composum-sling-package-manager/1.11.5
  com.composum.sling.core/composum-sling-user-management/1.11.5

[configurations]
# the whitelisting of administrative login (to replace by service users in Nodes 2.0)
  org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment-composum
    whitelist.bundles=[ \
    "com.composum.core.commons", \
    "com.composum.core.pckgmgr", \
    "com.composum.core.pckginstall", \
    ]
    whitelist.name="composum"

# 
# 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=healthcheck]

# startlevel 5 together with jetty (to allow use during startup)
[artifacts startLevel=5]
  org.apache.felix/org.apache.felix.healthcheck.api/2.0.2
  org.apache.felix/org.apache.felix.healthcheck.core/2.0.6
  org.apache.felix/org.apache.felix.healthcheck.generalchecks/2.0.4
  org.apache.felix/org.apache.felix.healthcheck.webconsoleplugin/2.0.0

# sling health check bundles at startlevel 20
[artifacts startLevel=20]
  org.apache.sling/org.apache.sling.hc.api/1.0.4
  org.apache.sling/org.apache.sling.hc.support/1.0.6

[configurations]
# # bundles
  org.apache.felix.hc.generalchecks.BundlesStartedCheck
    hc.tags=[ \
    "bundles", \
    ]

  org.apache.felix.hc.generalchecks.CpuCheck
    cpuPercentageThresholdWarn=L"95"
    hc.tags=[ \
    "cpu", \
    "system-resources", \
    ]

  org.apache.felix.hc.generalchecks.DiskSpaceCheck
    diskPaths=[ \
    ".", \
    ]
    hc.tags=[ \
    "diskspace", \
    "system-resources", \
    ]

# # systemalive checks
  org.apache.felix.hc.generalchecks.FrameworkStartCheck
    hc.tags=[ \
    "systemalive", \
    ]
    targetStartLevel=I"30"

  org.apache.felix.hc.generalchecks.MemoryCheck
    hc.tags=[ \
    "memory", \
    "system-resources", \
    ]
    heapUsedPercentageThresholdCritical=L"100"
    heapUsedPercentageThresholdWarn=L"95"

  org.apache.felix.hc.generalchecks.ServicesCheck
    hc.tags=[ \
    "systemalive", \
    ]
    services.list=[ \
    "org.apache.sling.jcr.api.SlingRepository", \
    "org.apache.sling.engine.auth.Authenticator", \
    "org.apache.sling.api.resource.ResourceResolverFactory", \
    "org.apache.sling.api.servlets.ServletResolver", \
    "javax.script.ScriptEngineManager", \
    ]

# # system resources
  org.apache.felix.hc.generalchecks.ThreadUsageCheck
    hc.tags=[ \
    "threads", \
    "cpu", \
    "system-resources", \
    ]

# # Service Unavailable Filter for startup-shutdown
  org.apache.felix.hc.core.impl.filter.ServiceUnavailableFilter-startupandshutdown
    autoDisableFilter=B"true"
    avoid404DuringStartup=B"true"
    includeExecutionResult=B"false"
    osgi.http.whiteboard.context.select="(osgi.http.whiteboard.context.name\=*)"
    osgi.http.whiteboard.filter.regex="(?!/system/).*"
    responseTextFor503="classpath:org.apache.sling.starter.content:content/content/startup/index.html"
    service.ranking=I"2147483647"
    tags=[ \
    "systemalive", \
    ]

# # servlet
  org.apache.felix.hc.core.impl.servlet.HealthCheckExecutorServlet-default
    servletPath="/system/health"

# # service user for scripted health check (to make it easy to use jcr:/path/to/script urls)
  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-hc-support
    user.mapping=[ \
    "org.apache.sling.hc.support\=sling-readall", \
    ]

# 
# 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=models-jacksonexporter]

[variables]
  jackson.version=2.9.9

[artifacts]
  com.fasterxml.jackson.core/jackson-annotations/2.9.9
  com.fasterxml.jackson.core/jackson-core/2.9.9
  com.fasterxml.jackson.core/jackson-databind/2.9.9
  org.apache.sling/org.apache.sling.models.jacksonexporter/1.0.8

# 
# 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.
# 
# This is the OAK feature.
[feature name=oak]

[variables]
  oak.version=1.26.0

# The segment node store is used via a configuration
[artifacts startLevel=10]
  org.apache.felix/org.apache.felix.jaas/1.0.2

[artifacts startLevel=15]
  org.apache.jackrabbit/oak-api/1.26.0
  org.apache.jackrabbit/oak-blob-plugins/1.26.0
  org.apache.jackrabbit/oak-blob/1.26.0
  org.apache.jackrabbit/oak-commons/1.26.0
  org.apache.jackrabbit/oak-core-spi/1.26.0
  org.apache.jackrabbit/oak-core/1.26.0
  org.apache.jackrabbit/oak-jackrabbit-api/1.26.0
  org.apache.jackrabbit/oak-jcr/1.26.0
  org.apache.jackrabbit/oak-lucene/1.26.0
  org.apache.jackrabbit/oak-query-spi/1.26.0
  org.apache.jackrabbit/oak-security-spi/1.26.0
# TODO - Sling does not come up without oak-store-composite
  org.apache.jackrabbit/oak-store-composite/1.26.0
# OAK-7263 - oak-store-document should be in oak_mongo runmode
  org.apache.jackrabbit/oak-store-document/1.26.0
  org.apache.jackrabbit/oak-store-spi/1.26.0

# start the Oak server instance after all components have been configured
# and started to avoid restarting that component ( see SLING-4556 )
[artifacts startLevel=16]
  org.apache.sling/org.apache.sling.jcr.oak.server/1.2.4

[configurations]
  org.apache.felix.jaas.ConfigurationSpi
    jaas.configProviderName="FelixJaasProvider"
    jaas.defaultRealmName="jackrabbit.oak"

  org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl
    org.apache.jackrabbit.oak.authentication.configSpiName="FelixJaasProvider"

  org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName
    length=I"21"

  org.apache.jackrabbit.oak.security.user.UserConfigurationImpl
    defaultDepth="1"
    groupsPath="/home/groups"
    importBehavior="besteffort"
    usersPath="/home/users"

  org.apache.jackrabbit.oak.spi.security.user.action.DefaultAuthorizableActionProvider
    enabledActions=[ \
    "org.apache.jackrabbit.oak.spi.security.user.action.AccessControlAction", \
    ]
    groupPrivilegeNames=[ \
    "jcr:read", \
    ]
    userPrivilegeNames=[ \
    "jcr:all", \
    ]

  org.apache.felix.jaas.Configuration.factory-GuestLoginModule
    jaas.classname="org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule"
    jaas.controlFlag="optional"
    jaas.ranking=I"300"

  org.apache.felix.jaas.Configuration.factory-LoginModuleImpl
    jaas.classname="org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl"
    jaas.controlFlag="required"

  org.apache.felix.jaas.Configuration.factory-TokenLoginModule
    jaas.classname="org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule"
    jaas.controlFlag="sufficient"
    jaas.ranking=I"200"

[artifacts startLevel=15 runModes=oak_mongo]
  com.h2database/h2-mvstore/1.4.194
  org.mongodb/mongo-java-driver/3.8.2

[configurations runModes=oak_mongo]
  org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService
    db="sling"
    mongouri="mongodb://localhost:27017"

[artifacts startLevel=15 runModes=oak_tar]
  org.apache.jackrabbit/oak-segment-tar/1.26.0

[configurations runModes=oak_tar]
  org.apache.jackrabbit.oak.segment.SegmentNodeStoreService
    name="Default\ NodeStore"

# 
# 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=repoinit]

[artifacts]
  org.apache.sling/org.apache.sling.jcr.repoinit/1.1.20
  org.apache.sling/org.apache.sling.provisioning.model/1.8.4
  org.apache.sling/org.apache.sling.repoinit.parser/1.4.2

[configurations]
  org.apache.sling.jcr.repoinit.impl.RepositoryInitializer
    references="model@repoinit:context:/resources/provisioning/model.txt"

  [:repoinit]
# general
create path (sling:OrderedFolder) /content
set ACL for everyone
allow   jcr:read	on /content
end

# sling-mapping
create service user sling-mapping

set ACL for sling-mapping
allow   jcr:read    on /
end

# sling-readall
create service user sling-readall

set ACL for sling-readall
allow   jcr:read    on /
end

# sling-xss
create service user sling-xss

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

set ACL for sling-xss
allow   jcr:read    on /apps/sling/xss
end

# sling-i18n
create service user sling-i18n

set ACL for sling-i18n
allow   jcr:read    on /
end

# sling-jcr-install
create service user sling-jcr-install

# used for config OSGi writeback
create path (sling:Folder) /apps/sling/install

set ACL for sling-jcr-install
allow	jcr:read	on	/
allow	rep:write	on /apps/sling/install
end

# content-package installer
create service user sling-package-install

set ACL for sling-package-install
allow	jcr:all     on	/
allow   jcr:namespaceManagement,jcr:nodeTypeDefinitionManagement on :repository
end

#
# 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.
#
#
#
# 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.
#
# The feature for Apache Sling

[feature name=sling]

[variables]
  jackrabbit.version=2.20.0

[artifacts]
  commons-codec/commons-codec/1.14
  commons-collections/commons-collections/3.2.2
  javax.mail/mail/1.5.0-b01
  org.antlr/antlr4-runtime/4.7.2
  org.apache.commons/commons-collections4/4.4
  org.apache.commons/commons-math/2.2
  org.apache.geronimo.bundles/jstl/1.2_1
  org.apache.httpcomponents/httpclient-osgi/4.5.10
  org.apache.httpcomponents/httpcore-osgi/4.4.12
  org.apache.jackrabbit.vault/org.apache.jackrabbit.vault/3.4.4
  org.apache.servicemix.bundles/org.apache.servicemix.bundles.rhino/1.7.10_1
  org.apache.sling/org.apache.sling.adapter/2.1.10
  org.apache.sling/org.apache.sling.auth.form/1.0.20
  org.apache.sling/org.apache.sling.bundleresource.impl/2.3.2
  org.apache.sling/org.apache.sling.commons.classloader/1.4.4
  org.apache.sling/org.apache.sling.commons.compiler/2.3.6
  org.apache.sling/org.apache.sling.commons.fsclassloader/1.0.12
  org.apache.sling/org.apache.sling.commons.mime/2.2.2
  org.apache.sling/org.apache.sling.commons.scheduler/2.7.6
  org.apache.sling/org.apache.sling.commons.threads/3.2.20
  org.apache.sling/org.apache.sling.engine/2.7.2
  org.apache.sling/org.apache.sling.fsresource/2.1.16
  org.apache.sling/org.apache.sling.i18n/2.5.14
  org.apache.sling/org.apache.sling.installer.console/1.1.0
  org.apache.sling/org.apache.sling.installer.factory.packages/1.0.4
  org.apache.sling/org.apache.sling.installer.hc/2.0.2
  org.apache.sling/org.apache.sling.installer.provider.jcr/3.2.2
  org.apache.sling/org.apache.sling.jcr.contentloader/2.3.0
  org.apache.sling/org.apache.sling.jcr.resource/3.0.20
  org.apache.sling/org.apache.sling.models.api/1.3.8
  org.apache.sling/org.apache.sling.models.impl/1.4.12
  org.apache.sling/org.apache.sling.resourceresolver/1.6.16
  org.apache.sling/org.apache.sling.scripting.api/2.2.0
  org.apache.sling/org.apache.sling.scripting.core/2.2.0
  org.apache.sling/org.apache.sling.scripting.el-api/1.0.2
  org.apache.sling/org.apache.sling.scripting.javascript/3.1.2
  org.apache.sling/org.apache.sling.scripting.jsp-api/1.0.2
  org.apache.sling/org.apache.sling.scripting.jsp.taglib/2.4.0
  org.apache.sling/org.apache.sling.scripting.jsp/2.4.2
  org.apache.sling/org.apache.sling.scripting.sightly.compiler.java/1.1.4-1.4.0
  org.apache.sling/org.apache.sling.scripting.sightly.compiler/1.2.4-1.4.0
  org.apache.sling/org.apache.sling.scripting.sightly.js.provider/1.1.0
  org.apache.sling/org.apache.sling.scripting.sightly.models.provider/1.0.10
  org.apache.sling/org.apache.sling.scripting.sightly.repl/1.0.6
  org.apache.sling/org.apache.sling.scripting.sightly.runtime/1.2.0-1.4.0
  org.apache.sling/org.apache.sling.scripting.sightly/1.3.2-1.4.0
  org.apache.sling/org.apache.sling.serviceuser.webconsole/1.0.2
  org.apache.sling/org.apache.sling.serviceusermapper/1.4.4
  org.apache.sling/org.apache.sling.servlets.get/2.1.40
  org.apache.sling/org.apache.sling.servlets.post/2.3.36
  org.apache.sling/org.apache.sling.servlets.resolver/2.6.4
# Default Starter content
# Adjust responseTextFor503 in healthcheck.txt to "classpath:org.apache.sling.starter.content:startup/index.html" when updating org.apache.sling.starter.content, see SLING-8721
  org.apache.sling/org.apache.sling.starter.content/1.0.8
  org.apache.sling/org.apache.sling.xss/2.2.2

[artifacts startLevel=4]
  org.apache.felix/org.apache.felix.metatype/1.2.2
  org.apache.felix/org.apache.felix.scr/2.1.20

[artifacts startLevel=5]
  commons-fileupload/commons-fileupload/1.4
  commons-io/commons-io/2.6
  org.apache.aries.jmx/org.apache.aries.jmx.api/1.1.5
  org.apache.aries.jmx/org.apache.aries.jmx.core/1.1.8
  org.apache.aries.jmx/org.apache.aries.jmx.whiteboard/1.2.0
  org.apache.felix/org.apache.felix.bundlerepository/2.0.10
  org.apache.felix/org.apache.felix.http.whiteboard/4.0.0
  org.apache.felix/org.apache.felix.inventory/1.0.6
  org.apache.felix/org.apache.felix.prefs/1.1.0
  org.apache.felix/org.apache.felix.webconsole.plugins.ds/2.1.0
  org.apache.felix/org.apache.felix.webconsole.plugins.event/1.1.8
  org.apache.felix/org.apache.felix.webconsole.plugins.memoryusage/1.0.10
  org.apache.felix/org.apache.felix.webconsole.plugins.obr/1.0.4
  org.apache.felix/org.apache.felix.webconsole.plugins.packageadmin/1.0.4
  org.apache.felix/org.apache.felix.webconsole/4.5.0
  org.apache.sling/org.apache.sling.api/2.22.0
  org.apache.sling/org.apache.sling.auth.core/1.4.6
  org.apache.sling/org.apache.sling.commons.log.webconsole/1.0.0
  org.apache.sling/org.apache.sling.extensions.threaddump/0.2.2
  org.apache.sling/org.apache.sling.extensions.webconsolebranding/1.0.2
  org.apache.sling/org.apache.sling.extensions.webconsolesecurityprovider/1.2.4

[artifacts startLevel=10]
  org.apache.felix/org.apache.felix.http.sslfilter/1.2.6
  org.apache.pdfbox/fontbox/2.0.17
  org.apache.pdfbox/jempbox/1.8.16
  org.apache.pdfbox/pdfbox/2.0.17
  org.apache.tika/tika-core/1.24
  org.apache.tika/tika-parsers/1.24

[artifacts startLevel=15]
  com.google.guava/guava/15.0
  io.dropwizard.metrics/metrics-core/3.2.6
  org.apache.jackrabbit/jackrabbit-data/2.20.0
  org.apache.jackrabbit/jackrabbit-jcr-commons/2.20.0
  org.apache.jackrabbit/jackrabbit-jcr-rmi/2.20.0
  org.apache.jackrabbit/jackrabbit-spi-commons/2.20.0
  org.apache.jackrabbit/jackrabbit-spi/2.20.0
  org.apache.jackrabbit/jackrabbit-webdav/2.20.0
  org.apache.sling/org.apache.sling.commons.metrics/1.2.8
  org.apache.sling/org.apache.sling.jcr.api/2.4.0
  org.apache.sling/org.apache.sling.jcr.base/3.1.0
  org.apache.sling/org.apache.sling.jcr.davex/1.3.10
  org.apache.sling/org.apache.sling.jcr.jackrabbit.accessmanager/3.0.4
  org.apache.sling/org.apache.sling.jcr.jackrabbit.usermanager/2.2.8
  org.apache.sling/org.apache.sling.jcr.jcr-wrapper/2.0.0
  org.apache.sling/org.apache.sling.jcr.registration/1.0.6
  org.apache.sling/org.apache.sling.jcr.webconsole/1.0.2
  org.apache.sling/org.apache.sling.jcr.webdav/2.3.8
  org.apache.sling/org.apache.sling.resource.filter/1.0.0

[configurations]
  org.apache.sling.commons.log.LogManager
    org.apache.sling.commons.log.file="logs/error.log"
    org.apache.sling.commons.log.file.number=I"7"
    org.apache.sling.commons.log.file.size="'.'yyyy-MM-dd"
    org.apache.sling.commons.log.level="info"
    org.apache.sling.commons.log.packagingDataEnabled=B"true"
    org.apache.sling.commons.log.pattern="%d{dd.MM.yyyy\ HH:mm:ss.SSS}\ *%level*\ [%thread]\ %logger\ %msg%n"

  org.apache.sling.engine.impl.log.RequestLogger
    access.log.enabled=B"true"
    access.log.output="log.access"
    access.log.outputtype=I"0"
    request.log.enabled=B"true"
    request.log.output="log.request"
    request.log.outputtype=I"0"

# DavEx servlet requires config now
  org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet
    alias="/server"

# WebDAV servlet requires config now
  org.apache.sling.jcr.webdav.impl.servlets.SimpleWebDavServlet
    dav.root="/dav"

# 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.commons.log.LogManager.factory.config-access.log
    org.apache.sling.commons.log.file="logs/access.log"
    org.apache.sling.commons.log.level="info"
    org.apache.sling.commons.log.names=[ \
    "log.access", \
    ]
    org.apache.sling.commons.log.pattern="%msg%n"

  org.apache.sling.commons.log.LogManager.factory.config-request.log
    org.apache.sling.commons.log.file="logs/request.log"
    org.apache.sling.commons.log.level="info"
    org.apache.sling.commons.log.names=[ \
    "log.request", \
    ]
    org.apache.sling.commons.log.pattern="%msg%n"

# TODO: remove bundles as their dependency on admin login is fixed, see SLING-5355 for linked issues
# For these bundles, admin login is considered "ok":
# org.apache.sling.jcr.contentloader
  org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment-sling
    whitelist.bundles=[ \
    "org.apache.sling.discovery.commons", \
    "org.apache.sling.discovery.base", \
    "org.apache.sling.discovery.oak", \
    "org.apache.sling.extensions.webconsolesecurityprovider", \
    "org.apache.sling.i18n", \
    "org.apache.sling.jcr.base", \
    "org.apache.sling.jcr.contentloader", \
    "org.apache.sling.jcr.jackrabbit.usermanager", \
    "org.apache.sling.jcr.oak.server", \
    "org.apache.sling.jcr.repoinit", \
    "org.apache.sling.jcr.webconsole", \
    "org.apache.sling.servlets.post", \
    "org.apache.sling.serviceuser.webconsole", \
    ]
    whitelist.name="sling"

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-i18n
    user.mapping=[ \
    "org.apache.sling.i18n\=sling-i18n", \
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-installer-factories
    user.mapping=[ \
    "org.apache.sling.installer.factory.packages\=sling-package-install", \
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-jcr-install
    user.mapping=[ \
    "org.apache.sling.installer.provider.jcr\=sling-jcr-install", \
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-jcr-resource
    user.mapping=[ \
    "org.apache.sling.jcr.resource:validation\=sling-readall", \
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-observation
    user.mapping=[ \
    "org.apache.sling.jcr.resource:observation\=sling-readall", \
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-resourceresolver
    user.mapping=[ \
    "org.apache.sling.resourceresolver:mapping\=sling-mapping", \
    "org.apache.sling.resourceresolver:hierarchy\=sling-readall", \
    "org.apache.sling.resourceresolver:observation\=sling-readall", \
    "org.apache.sling.resourceresolver:console\=sling-readall", \
    ]

  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", \
    ]

# the user mapping for the servlet resolver, subservice "console" namely the user sling-scripting is created in scripting.txt
  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-servletsresolver
    user.mapping=[ \
    "org.apache.sling.servlets.resolver:console\=sling-readall", \
    "org.apache.sling.servlets.resolver:scripts\=sling-scripting", \
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-xss
    user.mapping=[ \
    "org.apache.sling.xss\=sling-xss", \
    ]

  [: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 >>>



#
# 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-caconfig]

[artifacts]
  org.apache.sling/org.apache.sling.caconfig.api/1.2.0
  org.apache.sling/org.apache.sling.caconfig.impl/1.5.0
  org.apache.sling/org.apache.sling.caconfig.spi/1.3.4

[configurations]
  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-sling-caconfig
    user.mapping=[ \
    "org.apache.sling.caconfig.impl\=sling-readall", \
    ]

  [:repoinit]
create path (sling:Folder) /conf


#
# 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-discovery]

[artifacts]
  org.apache.sling/org.apache.sling.discovery.api/1.0.4
  org.apache.sling/org.apache.sling.discovery.base/2.0.8
  org.apache.sling/org.apache.sling.discovery.commons/1.0.20
  org.apache.sling/org.apache.sling.discovery.oak/1.2.28
  org.apache.sling/org.apache.sling.discovery.support/1.0.4

[configurations]
  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-sling.discovery
    user.mapping=[ \
    "org.apache.sling.discovery.commons\=sling-discovery", \
    "org.apache.sling.discovery.base\=sling-discovery", \
    "org.apache.sling.discovery.oak\=sling-discovery", \
    ]

  [:repoinit]
create service user sling-discovery

create path (sling:Folder) /var/discovery
create path (sling:Folder) /var/discovery/oak

set ACL for sling-discovery
allow   jcr:read,rep:write    on /var/discovery
end



#
# 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-event]

[artifacts]
  org.apache.sling/org.apache.sling.event.dea/1.1.4
  org.apache.sling/org.apache.sling.event/4.2.12

[configurations]
  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-sling.event
    user.mapping=[ \
    "org.apache.sling.event\=sling-event", \
    "org.apache.sling.event.dea\=sling-event", \
    ]

  [:repoinit]
create service user sling-event

create path (sling:Folder) /var
create path (sling:Folder) /var/eventing

set ACL for sling-event
allow   jcr:read,rep:write    on /var/eventing
end



#
# 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-validation]

[artifacts]
  org.apache.sling/org.apache.sling.validation.api/1.0.0
  org.apache.sling/org.apache.sling.validation.core/1.0.4

[configurations]
  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-validation
    user.mapping=[ \
    "org.apache.sling.validation.core\=sling-validation", \
    ]

  [:repoinit]
create service user sling-validation

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

set ACL for sling-validation
allow   jcr:read    on /apps
allow   jcr:read    on /libs
end


#
# 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.
#
# The feature for Apache Sling - Slingshot Sample App

[feature name=slingshot version=0.9.0]

[artifacts]
  org.apache.sling/org.apache.sling.sample.slingshot/0.9.0

[configurations]
  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-sling.slingshot
    user.mapping=[ \
    "org.apache.sling.sample.slingshot\=slingshot-service", \
    ]

  [:repoinit]
create service user slingshot-service
create user slingshot1 with password slingshot1
create user slingshot2 with password slingshot2

create path (sling:Folder) /content/slingshot
create path (sling:Folder) /content/slingshot/users
create path (sling:Folder) /content/slingshot/users/slingshot1
create path (sling:Folder) /content/slingshot/users/slingshot2

set ACL for slingshot-service
allow   jcr:read,rep:write    on /content/slingshot
end

set ACL for slingshot1
allow   jcr:read,rep:write    on /content/slingshot/users/slingshot1
end

set ACL for slingshot2
allow   jcr:read,rep:write    on /content/slingshot/users/slingshot2
end

#
# 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.
#
# The :standalone feature contains artifacts for the standalone jar

[feature name=standalone]

# Add a servlet implementation for the standalone case
[artifacts startLevel=5 runModes=:standalone]
  org.apache.felix/org.apache.felix.http.jetty/4.0.18
  org.apache.felix/org.apache.felix.http.servlet-api/1.1.2

# 
# 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.
# 
# The :standalone feature contains artifacts for the standalone jar
[feature name=webapp]

# Add the felix servlet bridge for the webapp case
[artifacts runModes=:webapp]
  org.apache.felix/org.apache.felix.http.bridge/4.0.12
