################################################################################
#
#    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 file lists Karaf default settings for this particular version of Karaf.
# For easier maintenance when upgrading Karaf and to better document which
# default values have changed, it is recommended to place any changes to
# these values in a custom.properties file in the same folder as this file.
# Each value specified in custom.properties will override the default value
# here.
#

#
# Properties file inclusions (as a space separated list of relative paths)
# Included files will override the values specified in this file
# NB: ${includes} properties files are mandatory, it means that Karaf will not start
# if the include file is not found
#
${includes} = jre.properties custom.properties

#
# Properties file inclusions (as a space separated list of relative paths)
# Included files will override the values specified in this file
# NB: ${optionals} properties files are optionals, it means that Karaf will just
# display a warning message but the bootstrap will be performed
#
# ${optionals} = my.properties

#
# Framework selection properties
#
karaf.framework=felix

#
# Location of the OSGi frameworks
#
karaf.framework.equinox=mvn\:@@equinox.groupId@@/@@equinox.artifactId@@/@@equinox.version@@
karaf.framework.felix=mvn\:org.apache.felix/org.apache.felix.framework/@@felix.framework.version@@

#
# Framework config properties.
#
org.osgi.framework.system.packages= \
 org.osgi.dto;version="1.0",\
 org.osgi.resource;version="1.0",\
 org.osgi.resource.dto;version="1.0";uses:="org.osgi.dto",\
 org.osgi.framework;version="1.8",\
 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.2";uses:="org.osgi.dto,org.osgi.resource.dto",\
 org.osgi.service.condpermadmin;version="1.1.1";uses:="org.osgi.framework,org.osgi.service.permissionadmin",\
 org.osgi.service.packageadmin;version="1.2";uses:="org.osgi.framework",org.osgi.service.permissionadmin;version="1.2",\
 org.osgi.service.resolver;version="1.0";uses:="org.osgi.resource",\
 org.osgi.service.startlevel;version="1.1";uses:="org.osgi.framework",\
 org.osgi.service.url;version="1.0",\
 org.osgi.util.tracker;version="1.5.1";uses:="org.osgi.framework",\
 org.apache.karaf.version;version="@@karaf.osgi.version@@",\
 org.apache.karaf.jaas.boot.principal;uses:=javax.security.auth;version="@@karaf.osgi.version@@",\
 org.apache.karaf.jaas.boot;uses:="javax.security.auth,javax.security.auth.callback,javax.security.auth.login,javax.security.auth.spi,org.osgi.framework";version="@@karaf.osgi.version@@",\
 org.apache.karaf.info;version="@@karaf.osgi.version@@",\
 ${jre-${java.specification.version}}

#
# Extra packages appended after standard packages
#
org.osgi.framework.system.packages.extra= \
 org.apache.karaf.branding, \
 sun.misc, \
 com.sun.jmx.remote.protocol, \
 com.sun.jmx.remote.protocol.jmxmp

org.osgi.framework.system.capabilities= \
 ${eecap-${java.specification.version}}, \
 ${${karaf.framework}-capabilities}, \
 ${karaf-capabilities}

karaf-capabilities= \
 osgi.service;objectClass:List<String>=org.apache.karaf.info.ServerInfo

felix-capabilities= \
 osgi.service;objectClass:List<String>=org.osgi.service.packageadmin.PackageAdmin, \
 osgi.service;objectClass:List<String>=org.osgi.service.resolver.Resolver, \
 osgi.service;objectClass:List<String>=org.osgi.service.startlevel.StartLevel

equinox-capabilities= \
 osgi.service;objectClass:List<String>=java.lang.ClassLoader;equinox.classloader.type=contextClassLoader, \
 osgi.service;objectClass:List<String>=javax.xml.parsers.DocumentBuilderFactory, \
 osgi.service;objectClass:List<String>=javax.xml.parsers.SAXParserFactory, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.framework.log.FrameworkLog, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.framework.log.FrameworkLog;performance=true, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=eclipse.home.location, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=osgi.configuration.area, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=osgi.install.area, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=osgi.instance.area, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=osgi.user.area, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.debug.DebugOptions, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.environment.EnvironmentInfo, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.localization.BundleLocalization, \
 osgi.service;objectClass:List<String>="org.osgi.service.log.LogReaderService,org.eclipse.equinox.log.ExtendedLogReaderService", \
 osgi.service;objectClass:List<String>="org.osgi.service.log.LogService,org.eclipse.equinox.log.ExtendedLogService", \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.security.TrustEngine;osgi.signedcontent.trust.engine=org.eclipse.osgi, \
 osgi.service;objectClass:List<String>=org.eclipse.osgi.service.urlconversion.URLConverter;protocol:List<String>="bundleentry,bundleresource"

eecap-15 = osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
 osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0,10.0,11.0,13.0,14.0,15.0", \
 osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
 osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0,10.0,11.0,13.0,14.0,15.0", \
 osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0,10.0,11.0,13.0,14.0,15.0", \
 osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0,10.0,11.0,13.0,14.0,15.0"
eecap-14 = osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
 osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0,10.0,11.0,13.0,14.0", \
 osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
 osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0,10.0,11.0,13.0,14.0", \
 osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0,10.0,11.0,13.0,14.0", \
 osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0,10.0,11.0,13.0,14.0"
eecap-13 = osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
 osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0,10.0,11.0,13.0", \
 osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
 osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0,10.0,11.0,13.0", \
 osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0,10.0,11.0,13.0", \
 osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0,10.0,11.0,13.0"
eecap-11= osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
 osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0,10.0,11.0", \
 osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
 osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0,10.0,11.0", \
 osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0,10.0,11.0", \
 osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0,10.0,11.0"
eecap-10= osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
 osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0,10.0", \
 osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
 osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0,10.0", \
 osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0,10.0", \
 osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0,10.0"
eecap-9= osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
 osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0", \
 osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
 osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0", \
 osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0", \
 osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0"
eecap-1.8= osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
 osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8", \
 osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
 osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8", \
 osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8", \
 osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8"

#
# javax.transaction is needed ONLY for com.sun.corba.se.impl.javax.rmi.CORBA.Util.mapSystemException().
# JDK8 and earlier provide only 3 exception classes in this package, so full JTA API bundles should always try the
# bootdelegation first - even if they also package (and export) javax.transaction package
#
# boot delegation of javax.transaction.xa is needed to avoid class loader constraint violation when using javax.sql
# and this package is always complete in all JDKs
#
org.osgi.framework.bootdelegation=\
      com.sun.*, \
      javax.transaction, \
      javax.transaction.xa, \
      javax.xml.crypto, \
      javax.xml.crypto.*, \
      jdk.nashorn.*, \
      sun.*, \
      jdk.internal.reflect, \
      jdk.internal.reflect.*

# jVisualVM support
# in order to use Karaf with jvisualvm, the org.osgi.framework.bootdelegation property has to contain the org.netbeans.lib.profiler.server package
# and, so, it should look like:
#
# org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,org.netbeans.lib.profiler.server
#
# YourKit support
# in order to use Karaf with YourKit, the org.osgi.framework.bootdelegation property has to contain the com.yourkit.* packages
# and, so, it should look like:
#
# org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,com.yourkit.*
#

#
# Set the parent classloader for the bundle to the classloader that loads the Framework (i.e. everything in lib/*.jar)
#
org.osgi.framework.bundle.parent=framework

#
# Definition of the default bundle start level
#
org.osgi.framework.startlevel.beginning=100
karaf.startlevel.bundle=80

#
# The location of the Karaf shutdown port file used to stop instance
#
karaf.shutdown.port.file=${karaf.data}/port

#
# The location of the Karaf pid file
#
karaf.pid.file=${karaf.base}/karaf.pid

#
# Configuration FileMonitor properties
#
felix.fileinstall.enableConfigSave = true
felix.fileinstall.dir    = ${karaf.etc}
felix.fileinstall.filter = .*\\.(cfg|config)
felix.fileinstall.poll   = 1000
felix.fileinstall.noInitialDelay = true
felix.fileinstall.log.level = 3
felix.fileinstall.log.default = jul

# Use cached urls for bundle CodeSource to avoid
# problems with JCE cached informations, see KARAF-3974
felix.bundlecodesource.usecachedurls = true

#
# Delay for writing the framework state to disk in equinox
# must be  >= 1000 and <= 1800000
#
eclipse.stateSaveDelayInterval = 1000

#
# OBR Repository list
# This property will be modified by the obr:addUrl and obr:removeUrl commands. 
#
obr.repository.url = 

#
# Start blueprint bundles synchronously when possible
#
org.apache.aries.blueprint.synchronous=true

#
# Do not weave all any classes by default
#
org.apache.aries.proxy.weaving.enabled=

#
# mvn url handler requires config instance configuration
#
org.ops4j.pax.url.mvn.requireConfigAdminConfig=true

#
# Don't delay the console startup. Set to true if you want the console to start after all other bundles
#
karaf.delay.console=false

#
# Enable native Karaf support for systemd's watchdog.
#
# In addition to setting the flag to true, the JNA library needs to be made
# available to the main classloader by adding the two following libraries
# to the lib/boot directory
#   mvn:net.java.dev.jna/jna/${jna.version}
#   mvn:net.java.dev.jna/jna-platform/${jna.version}
# or by building a custom distribution and adding the following lines for the
# karaf maven plugin configuration:
#    <library>mvn:net.java.dev.jna/jna/${jna.version};type:=boot;export:=false</library>
#    <library>mvn:net.java.dev.jna/jna-platform/${jna.version};type:=boot;export:=false</library>
#
#karaf.systemd.enabled=true
