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

# javax.annotation -- excluded, so we use jakarta (but processing sub-package is still needed)

# javax.xml.bind -- could come from jakarta.xml.bind-api
# javax.xml.ws -- could come from servicemix jaxws
# javax.activation -- could be declared, if using jakarta's bind
# but karaf gets unhappy if we try to use those instead of the java 1.8-supplied ones
# javax.xml.soap needs 1.4 to avoid timeout errors, and javax.jws.soap needs to be visible

jre-1.8= \
 javax.accessibility, \
 javax.activity, \
 javax.annotation.processing;version="1.0", \
 javax.crypto, \
 javax.crypto.interfaces, \
 javax.crypto.spec, \
 javax.imageio, \
 javax.imageio.event, \
 javax.imageio.metadata, \
 javax.imageio.plugins.bmp, \
 javax.imageio.plugins.jpeg, \
 javax.imageio.spi, \
 javax.imageio.stream, \
 javax.jws, \
 javax.jws.soap, \
 javax.lang.model, \
 javax.lang.model.element, \
 javax.lang.model.type, \
 javax.lang.model.util, \
 javax.management, \
 javax.management.loading, \
 javax.management.modelmbean, \
 javax.management.monitor, \
 javax.management.openmbean, \
 javax.management.relation, \
 javax.management.remote, \
 javax.management.remote.rmi, \
 javax.management.timer, \
 javax.naming, \
 javax.naming.directory, \
 javax.naming.event, \
 javax.naming.ldap, \
 javax.naming.spi, \
 javax.net, \
 javax.net.ssl, \
 javax.print, \
 javax.print.attribute, \
 javax.print.attribute.standard, \
 javax.print.event, \
 javax.rmi, \
 javax.rmi.CORBA, \
 javax.rmi.ssl, \
 javax.script, \
 javax.security.auth, \
 javax.security.auth.callback, \
 javax.security.auth.kerberos, \
 javax.security.auth.login, \
 javax.security.auth.spi, \
 javax.security.auth.x500, \
 javax.security.cert, \
 javax.security.sasl, \
 javax.sound.midi, \
 javax.sound.midi.spi, \
 javax.sound.sampled, \
 javax.sound.sampled.spi, \
 javax.sql, \
 javax.sql.rowset, \
 javax.sql.rowset.serial, \
 javax.sql.rowset.spi, \
 javax.swing, \
 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.plaf.multi, \
 javax.swing.plaf.synth, \
 javax.swing.table, \
 javax.swing.text, \
 javax.swing.text.html, \
 javax.swing.text.html.parser, \
 javax.swing.text.rtf, \
 javax.swing.tree, \
 javax.swing.undo, \
 javax.tools, \
 javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
 javax.xml, \
 javax.xml.bind;version="2.2.8", \
 javax.xml.bind.annotation;version="2.2.8", \
 javax.xml.bind.annotation.adapters;version="2.2.8", \
 javax.xml.bind.attachment;version="2.2.8", \
 javax.xml.bind.helpers;version="2.2.8", \
 javax.xml.bind.util;version="2.2.8", \
 javax.xml.crypto, \
 javax.xml.crypto.dom, \
 javax.xml.crypto.dsig, \
 javax.xml.crypto.dsig.dom, \
 javax.xml.crypto.dsig.keyinfo, \
 javax.xml.crypto.dsig.spec, \
 javax.xml.datatype, \
 javax.xml.namespace, \
 javax.xml.parsers, \
 javax.xml.soap;version="1.4", \
 javax.xml.stream;version="1.2", \
 javax.xml.stream.events;version="1.2", \
 javax.xml.stream.util;version="1.2", \
 javax.xml.transform, \
 javax.xml.transform.dom, \
 javax.xml.transform.sax, \
 javax.xml.transform.stax, \
 javax.xml.transform.stream, \
 javax.xml.validation, \
 javax.xml.ws;version="2.2", \
 javax.xml.ws.handler;version="2.2", \
 javax.xml.ws.handler.soap;version="2.2", \
 javax.xml.ws.http;version="2.2", \
 javax.xml.ws.soap;version="2.2", \
 javax.xml.ws.spi;version="2.2", \
 javax.xml.ws.wsaddressing;version="2.2", \
 javax.xml.ws.spi.http;version="2.2", \
 javax.xml.xpath, \
 javafx.animation, \
 javafx.application, \
 javafx.beans, \
 javafx.beans.binding, \
 javafx.beans.property, \
 javafx.beans.property.adapter, \
 javafx.beans.value, \
 javafx.collections, \
 javafx.collections.transform, \
 javafx.concurrent, \
 javafx.css, \
 javafx.embed.swing, \
 javafx.embed.swt, \
 javafx.event, \
 javafx.fxml, \
 javafx.geometry, \
 javafx.print, \
 javafx.scene, \
 javafx.scene.canvas, \
 javafx.scene.chart, \
 javafx.scene.control, \
 javafx.scene.control.cell, \
 javafx.scene.effect, \
 javafx.scene.image, \
 javafx.scene.input, \
 javafx.scene.layout, \
 javafx.scene.media, \
 javafx.scene.paint, \
 javafx.scene.shape, \
 javafx.scene.text, \
 javafx.scene.transform, \
 javafx.scene.web, \
 javafx.stage, \
 javafx.util, \
 javafx.util.converter, \
 netscape.javascript, \
 org.ietf.jgss, \
 org.omg.CORBA, \
 org.omg.CORBA_2_3, \
 org.omg.CORBA_2_3.portable, \
 org.omg.CORBA.DynAnyPackage, \
 org.omg.CORBA.ORBPackage, \
 org.omg.CORBA.portable, \
 org.omg.CORBA.TypeCodePackage, \
 org.omg.CosNaming, \
 org.omg.CosNaming.NamingContextExtPackage, \
 org.omg.CosNaming.NamingContextPackage, \
 org.omg.Dynamic, \
 org.omg.DynamicAny, \
 org.omg.DynamicAny.DynAnyFactoryPackage, \
 org.omg.DynamicAny.DynAnyPackage, \
 org.omg.IOP, \
 org.omg.IOP.CodecFactoryPackage, \
 org.omg.IOP.CodecPackage, \
 org.omg.Messaging, \
 org.omg.PortableInterceptor, \
 org.omg.PortableInterceptor.ORBInitInfoPackage, \
 org.omg.PortableServer, \
 org.omg.PortableServer.CurrentPackage, \
 org.omg.PortableServer.POAManagerPackage, \
 org.omg.PortableServer.POAPackage, \
 org.omg.PortableServer.portable, \
 org.omg.PortableServer.ServantLocatorPackage, \
 org.omg.SendingContext, \
 org.omg.stub.java.rmi, \
 org.omg.stub.javax.management.remote.rmi, \
 org.w3c.dom, \
 org.w3c.dom.bootstrap, \
 org.w3c.dom.css, \
 org.w3c.dom.events, \
 org.w3c.dom.html, \
 org.w3c.dom.ls, \
 org.w3c.dom.ranges, \
 org.w3c.dom.stylesheets, \
 org.w3c.dom.traversal, \
 org.w3c.dom.views, \
 org.w3c.dom.xpath, \
 org.xml.sax, \
 org.xml.sax.ext, \
 org.xml.sax.helpers, \
 com.sun.nio.sctp

