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

#
# Java platform package export properties.
#

# Contains java.* packages provided by the JDK (and so system packages)
jre-base= \
 java.applet, \
 java.awt, \
 java.awt.color, \
 java.awt.datatransfer, \
 java.awt.dnd, \
 java.awt.event, \
 java.awt.font, \
 java.awt.geom, \
 java.awt.im, \
 java.awt.im.spi, \
 java.awt.image, \
 java.awt.image.renderable, \
 java.awt.print, \
 java.beans, \
 java.beans.beancontext, \
 java.io, \
 java.lang, \
 java.lang.annotation, \
 java.lang.constant, \
 java.lang.instrument, \
 java.lang.invoke, \
 java.lang.management, \
 java.lang.ref, \
 java.lang.reflect, \
 java.lang.runtime, \
 java.math, \
 java.net, \
 java.net.http, \
 java.nio, \
 java.nio.channels, \
 java.nio.channels.spi, \
 java.nio.charset, \
 java.nio.charset.spi, \
 java.nio.file, \
 java.nio.file.attribute, \
 java.rmi, \
 java.rmi.activation, \
 java.rmi.dgc, \
 java.rmi.registry, \
 java.rmi.server, \
 java.security, \
 java.security.acl, \
 java.security.cert, \
 java.security.interfaces, \
 java.security.spec, \
 java.sql, \
 java.text, \
 java.text.spi, \
 java.time, \
 java.time.chrono, \
 java.time.format, \
 java.time.temporal, \
 java.time.zone, \
 java.util, \
 java.util.concurrent, \
 java.util.concurrent.atomic, \
 java.util.concurrent.locks, \
 java.util.function, \
 java.util.random, \
 java.util.jar, \
 java.util.logging, \
 java.util.prefs, \
 java.util.regex, \
 java.util.spi, \
 java.util.stream, \
 java.util.zip

#
# A note about javax.transaction and javax.transaction.xa packages in JDK8 and JDK9+
# - javax.transaction package is not provided at all in JDK9+ because of the removal of Corba
# - javax.transaction package in JDK8 and earlier contains only 3 exception classes required to translate 3 Corba/OMG
#   exception: org.omg.CORBA.TRANSACTION_REQUIRED, org.omg.CORBA.TRANSACTION_ROLLEDBACK, org.omg.CORBA.INVALID_TRANSACTION
# - javax.transaction.xa package should always be provided by JDK itself (thus exported from system bundle and bootdelegated)
#   because of javax.sql.XAConnection interface relying on javax.sql.xa.XAResource interface
# - I decided to export javax.transaction.xa package with all the versions: 1.1, 1.2 and 1.3 just to satisfy all potential
#   import version ranges (and emphasize the fact that JavaEE doesn't version packages at all)
# - javax.transaction package should be exported by JDK8 (but not JDK9+) with mandatory attribute ("partial" is an
#   arbirtary name mentioned in "https://docs.osgi.org/specification/osgi.core/7.0.0/framework.module.html#framework.module.requirebundle"
# - javax.transaction exported with "partial=true;mandatory:=partial" prevents system bundle to be a wire candidate for
#   bundles with just "Import-Package: javax.transaction" - actual JTA API bundle is needed to provide all the classes
#   from this package (like javax.transaction.UserTransaction)
# - thus javax.transaction package is exported without a version - because each bundle with "Import-Package: javax.transaction"
#   should always wire to full JTA API bundle. The fact that the JDK8 provided exception classes from this package
#   are always loaded using boot class loader is an obvious, but internal consequence
# - the full trick mentioned in "3.13.1 Require-Bundle" requires another bundle that exports javax.transaction package
#   without mandatory attribute and that has Require-Bundle requirement to a bundle that exports the package with mandatory
#   attribute - and that's what javax.transaction/javax.transaction-api/1.2 does - it contains "Require-Bundle: system.bundle"
# - Require-Bundle in JTA API bundle is not needed if javax.transaction is boot-delegated - because failure to search
#   boot-delegated javax.* packages doesn't stop the class loading process - local content is checked
# - jakarta.transaction/jakarta.transaction-api/1.3.x doesn't have (by mistake, see https://github.com/eclipse-ee4j/jta-api/issues/186)
#   "Require-Bundle: system.bundle", but it still works thanks to boot-delegation
# And last, but important thing - DBCP2 (see DBCP-571) has "Import-Package: javax.transaction.xa;partial=true;mandatory:=partial"
# which is simply wrong (if anything, javax.transaction package should be imported this way, not javax.transaction.xa),
# but to allow DBCP2 to be resolved on Karaf, special export package is added just for DBCP2:
#     Export-Package: javax.transaction.xa;partial=true;mandatory:=partial;version="1.1"
# - mandatory "partial" attribute is added to javax.transaction export (JDK8) to prevent wiring to this package without
#   full JTA API bundle
# - mandatory "partial" attribute is added to javax.transaction.xa export (all JDKs) to satisfy DBCP2
#

jre-1.8= \
 ${jre-base}, \
 javax.accessibility, \
 javax.activity, \
 javax.annotation;version="1.0", \
 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;partial=true;mandatory:=partial, \
 javax.transaction.xa;version="1.1";partial=true;mandatory:=partial, \
 javax.transaction.xa;version="1.1", \
 javax.transaction.xa;version="1.2", \
 javax.transaction.xa;version="1.3", \
 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.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

jre-9= \
 ${jre-base}, \
 java.lang.module, \
 java.net.spi, \
 javax.accessibility, \
 javax.activity, \
 javax.annotation;version="1.3", \
 javax.annotation.processing;version="1.0", \
 javax.activation;version="1.2.1", \
 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.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.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.xa;version="1.1";partial=true;mandatory:=partial, \
 javax.transaction.xa;version="1.1", \
 javax.transaction.xa;version="1.2", \
 javax.transaction.xa;version="1.3", \
 javax.xml, \
 javax.xml.bind;version="2.3.0", \
 javax.xml.bind.annotation;version="2.3.0", \
 javax.xml.bind.annotation.adapters;version="2.3.0", \
 javax.xml.bind.attachment;version="2.3.0", \
 javax.xml.bind.helpers;version="2.3.0", \
 javax.xml.bind.util;version="2.3.0", \
 javax.xml.catalog, \
 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.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.xpath, \
 javafx.animation, \
 javafx.application, \
 javafx.beans, \
 javafx.beans.binding, \
 javafx.beans.property, \
 javafx.beans.property.adapter, \
 javafx.beans.value, \
 javafx.collections, \
 javafx.collections.transformation, \
 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.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.security.sasl, \
 com.sun.security.sasl.digest, \
 com.sun.security.sasl.ntlm, \
 com.sun.security.sasl.util 

jre-10 = ${jre-9}
jre-11 = ${jre-10}
jre-12 = ${jre-11}
jre-13 = ${jre-12}
jre-14 = ${jre-13}
jre-15 = ${jre-14}
jre-16 = ${jre-15}
jre-17 = ${jre-16}
jre-18 = ${jre-17}
