################################################################################
#
#    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.
#
################################################################################

#
# You can place any customized configuration here.
# All the values specified here will override the default value.
#

# Brooklyn used to bundle Apache Felix, so force felix
karaf.framework=felix

# brooklyn used 4.4.0 at the time of osgification, which differs from karaf's bundled felix version
#karaf.framework.felix=mvn\:org.apache.felix/org.apache.felix.framework/${felix.framework.version}

#karaf.systemBundlesStartLevel=50
#
#org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,!com.sun.xml.messaging.saaj.*,!com.sun.xml.internal.bind.*,sun.*,com.sun.*,javax.transaction,javax.transaction.*,org.apache.xalan.processor,org.apache.xpath.jaxp,org.apache.xml.dtm.ref,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.osgi.framework.system.packages.extra = \
#  org.apache.karaf.branding, \
#  com.sun.org.apache.xalan.internal.xsltc.trax, \
#  com.sun.org.apache.xerces.internal.dom, \
#  com.sun.org.apache.xerces.internal.jaxp, \
#  com.sun.org.apache.xerces.internal.xni, \
#  com.sun.jndi.ldap, \
#  org.apache.xalan.extensions; version="2.7.1", \
#  org.apache.xalan.xsltc.compiler; version="2.7.1", \
#  org.apache.xalan.xsltc.cmdline.getopt; version="2.7.1", \
#  org.apache.xalan.xsltc.util; version="2.7.1", \
#  org.apache.xalan.transformer; version="2.7.1", \
#  org.apache.xalan.xsltc.trax; version="2.7.1", \
#  org.apache.xalan.processor; version="2.7.1", \
#  org.apache.xalan.lib; version="2.7.1", \
#  org.apache.xalan.trace; version="2.7.1", \
#  org.apache.xalan.xsltc.compiler.util; version="2.7.1", \
#  org.apache.xalan.templates; version="2.7.1", \
#  org.apache.xalan.xsltc; version="2.7.1", \
#  org.apache.xalan.xsltc.runtime; version="2.7.1", \
#  org.apache.xalan; version="2.7.1", \
#  org.apache.xalan.xslt; version="2.7.1", \
#  org.apache.xalan.lib.sql; version="2.7.1", \
#  org.apache.xalan.xsltc.runtime.output; version="2.7.1", \
#  org.apache.xalan.xsltc.dom; version="2.7.1", \
#  org.apache.xalan.client; version="2.7.1", \
#  org.apache.xalan.xsltc.cmdline; version="2.7.1", \
#  org.apache.xalan.serialize; version="2.7.1", \
#  org.apache.xalan.res; version="2.7.1", \
#  org.apache.xml.dtm.ref; version="2.7.1", \
#  org.apache.xml.dtm; version="2.7.1", \
#  org.apache.xml.dtm.ref.sax2dtm; version="2.7.1", \
#  org.apache.xml.dtm.ref.dom2dtm; version="2.7.1", \
#  org.apache.xml.res; version="2.7.1", \
#  org.apache.xml.serializer.dom3; version="2.7.1", \
#  org.apache.xml.serializer; version="2.7.1", \
#  org.apache.xml.serializer.utils; version="2.7.1", \
#  org.apache.xml.utils.res; version="2.7.1", \
#  org.apache.xml.utils; version="2.7.1", \
#  org.apache.xpath.functions; version="2.7.1", \
#  org.apache.xpath.jaxp; version="2.7.1", \
#  org.apache.xpath.patterns; version="2.7.1", \
#  org.apache.xpath.objects; version="2.7.1", \
#  org.apache.xpath.res; version="2.7.1", \
#  org.apache.xpath; version="2.7.1", \
#  org.apache.xpath.axes; version="2.7.1", \
#  org.apache.xpath.compiler; version="2.7.1", \
#  org.apache.xpath.operations; version="2.7.1", \
#  org.apache.xpath.domapi; version="2.7.1", \
#  org.apache.html.dom; version="2.11.0", \
#  org.apache.wml.dom; version="2.11.0", \
#  org.apache.wml; version="2.11.0", \
#  org.apache.xerces.parsers; version="2.11.0", \
#  org.apache.xerces.impl.dtd.models; version="2.11.0", \
#  org.apache.xerces.xni.parser; version="2.11.0", \
#  org.apache.xerces.impl.dv.xs; version="2.11.0", \
#  org.apache.xerces.impl.xs.traversers; version="2.11.0", \
#  org.apache.xerces.util; version="2.11.0", \
#  org.apache.xerces.impl.dtd; version="2.11.0", \
#  org.apache.xerces.jaxp.validation; version="2.11.0", \
#  org.apache.xerces.dom3.as; version="2.11.0", \
#  org.apache.xerces.impl.dv; version="2.11.0", \
#  org.apache.xerces.jaxp; version="2.11.0", \
#  org.apache.xerces.jaxp.datatype; version="2.11.0", \
#  org.apache.xerces.impl.xpath.regex; version="2.11.0", \
#  org.apache.xerces.xni; version="2.11.0", \
#  org.apache.xerces.impl.msg; version="2.11.0", \
#  org.apache.xerces.impl.dv.util; version="2.11.0", \
#  org.apache.xerces.impl.xs.util; version="2.11.0", \
#  org.apache.xerces.dom; version="2.11.0", \
#  org.apache.xerces.dom.events; version="2.11.0", \
#  org.apache.xerces.impl.xs.opti; version="2.11.0", \
#  org.apache.xerces.impl; version="2.11.0", \
#  org.apache.xerces.xs; version="2.11.0", \
#  org.apache.xerces.impl.io; version="2.11.0", \
#  org.apache.xerces.xpointer; version="2.11.0", \
#  org.apache.xerces.impl.dv.dtd; version="2.11.0", \
#  org.apache.xerces.xinclude; version="2.11.0", \
#  org.apache.xerces.impl.xpath; version="2.11.0", \
#  org.apache.xerces.xs.datatypes; version="2.11.0", \
#  org.apache.xerces.impl.xs.identity; version="2.11.0", \
#  org.apache.xerces.impl.xs.models; version="2.11.0", \
#  org.apache.xerces.xni.grammars; version="2.11.0", \
#  org.apache.xerces.impl.xs; version="2.11.0", \
#  org.apache.xerces.impl.validation; version="2.11.0", \
#  org.apache.xml.serialize; version="2.11.0"