<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2010, 2021 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.glassfish.main.core</groupId>
        <artifactId>core</artifactId>
        <version>7.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>api-exporter-fragment</artifactId>
    <packaging>jar</packaging>

    <name>GlassFish API Exporter Module Fragment</name>
    <description>This bundle attached itself as a fragment to api-exporter bundle</description>

    <!--
        Since DynamicImport-Package resolution happens incremantally, that can lead to minor performance issues,
        so we attach this fragment to api-exporter bundle. This bundle statically imports packages. Since it
        optionally imports them, even if some package is absent, it is not an issue. Please note,
        any package imported by this bundle is also visible to "Common Class Loader."
    -->
    <developers>
        <developer>
            <id>ss141213</id>
            <name>Sahoo</name>
            <organization>Oracle, Inc.</organization>
            <roles>
                <role>developer</role>
            </roles>
        </developer>
    </developers>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>export-package-regexp</id>
                        <goals>
                            <goal>regex-property</goal>
                        </goals>
                        <configuration>
                            <name>osgi.import.packages</name>
                            <regex>\s+</regex>
                            <replacement> </replacement>
                            <value>
                                jakarta.activation;
                                jakarta.annotation;
                                jakarta.annotation.security;
                                jakarta.annotation.sql;
                                jakarta.batch.api;
                                jakarta.batch.api.chunk;
                                jakarta.batch.api.chunk.listener;
                                jakarta.batch.api.listener;
                                jakarta.batch.api.partition;
                                jakarta.batch.operations;
                                jakarta.batch.runtime;
                                jakarta.batch.runtime.context;
                                jakarta.decorator;
                                jakarta.ejb;
                                jakarta.ejb.embeddable;
                                jakarta.ejb.spi;
                                jakarta.el;
                                jakarta.enterprise.concurrent;
                                jakarta.enterprise.context;
                                jakarta.enterprise.context.control;
                                jakarta.enterprise.context.spi;
                                jakarta.enterprise.event;
                                jakarta.enterprise.inject;
                                jakarta.enterprise.inject.literal;
                                jakarta.enterprise.inject.se;
                                jakarta.enterprise.inject.spi;
                                jakarta.enterprise.inject.spi.configurator;
                                jakarta.enterprise.util;
                                jakarta.faces;
                                jakarta.faces.annotation;
                                jakarta.faces.application;
                                jakarta.faces.bean;
                                jakarta.faces.component;
                                jakarta.faces.component.behavior;
                                jakarta.faces.component.html;
                                jakarta.faces.component.search;
                                jakarta.faces.component.visit;
                                jakarta.faces.context;
                                jakarta.faces.convert;
                                jakarta.faces.el;
                                jakarta.faces.event ;
                                jakarta.faces.flow;
                                jakarta.faces.flow.builder;
                                jakarta.faces.lifecycle;
                                jakarta.faces.model;
                                jakarta.faces.push;
                                jakarta.faces.render;
                                jakarta.faces.validator;
                                jakarta.faces.view;
                                jakarta.faces.view.facelets;
                                jakarta.faces.webapp;
                                jakarta.inject;
                                jakarta.interceptor;
                                jakarta.json;
                                jakarta.jms;
                                jakarta.json.bind;
                                jakarta.json.bind.adapter;
                                jakarta.json.bind.annotation;
                                jakarta.json.bind.config;
                                jakarta.json.bind.serializer;
                                jakarta.json.bind.spi;
                                jakarta.json.spi;
                                jakarta.json.stream;
                                jakarta.jws;
                                jakarta.jws.soap;
                                jakarta.mail;
                                jakarta.mail.event;
                                jakarta.mail.internet;
                                jakarta.mail.search;
                                jakarta.mail.util;
                                jakarta.persistence;
                                jakarta.persistence.criteria;
                                jakarta.persistence.metamodel;
                                jakarta.persistence.spi;
                                jakarta.resource;
                                jakarta.resource.cci;
                                jakarta.resource.spi;
                                jakarta.resource.spi.endpoint;
                                jakarta.resource.spi.security;
                                jakarta.resource.spi.work;
                                jakarta.security.auth.message;
                                jakarta.security.auth.message.callback;
                                jakarta.security.auth.message.config;
                                jakarta.security.auth.message.module;
                                jakarta.security.enterprise;
                                jakarta.security.enterprise.authentication.mechanism.http;
                                jakarta.security.enterprise.credential;
                                jakarta.security.enterprise.identitystore;
                                jakarta.security.jacc;
                                jakarta.servlet;
                                jakarta.servlet.annotation;
                                jakarta.servlet.descriptor;
                                jakarta.servlet.http;
                                jakarta.servlet.jsp;
                                jakarta.servlet.jsp.el;
                                jakarta.servlet.jsp.jstl.core;
                                jakarta.servlet.jsp.jstl.fmt;
                                jakarta.servlet.jsp.jstl.sql;
                                jakarta.servlet.jsp.jstl.tlv;
                                jakarta.servlet.jsp.tagext;
                                jakarta.transaction;
                                jakarta.validation;
                                jakarta.validation.bootstrap;
                                jakarta.validation.constraints;
                                jakarta.validation.constraintvalidation;
                                jakarta.validation.executable;
                                jakarta.validation.groups;
                                jakarta.validation.metadata;
                                jakarta.validation.spi;
                                jakarta.validation.valueextraction;
                                jakarta.websocket;
                                jakarta.websocket.server;
                                jakarta.ws.rs;
                                jakarta.ws.rs.client;
                                jakarta.ws.rs.container;
                                jakarta.ws.rs.core;
                                jakarta.ws.rs.ext;
                                jakarta.ws.rs.sse;
                                jakarta.ws.rs;
                                jakarta.ws.rs.client;
                                jakarta.ws.rs.container;
                                jakarta.ws.rs.core;
                                jakarta.ws.rs.ext;
                                jakarta.ws.rs.sse;
                                jakarta.xml.bind;
                                jakarta.xml.bind.annotation;
                                jakarta.xml.bind.annotation.adapters;
                                jakarta.xml.bind.attachment;
                                jakarta.xml.bind.helpers;
                                jakarta.xml.bind.util;
                                jakarta.xml.soap;
                                jakarta.xml.ws;
                                jakarta.xml.ws.handler;
                                jakarta.xml.ws.handler.soap;
                                jakarta.xml.ws.http;
                                jakarta.xml.ws.soap;
                                jakarta.xml.ws.spi;
                                jakarta.xml.ws.spi.http;
                                jakarta.xml.ws.wsaddressing;
                                javax.accessibility;
                                javax.activation;
                                javax.activity;
                                javax.annotation.processing;
                                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.j2ee;
                                javax.management.j2ee.statistics;
                                javax.management.loading;
                                javax.management.modelmbean;
                                javax.management.monitor;
                                javax.management.openmbean;
                                javax.management.relation;
                                javax.management.remote;
                                javax.management.remote.generic;
                                javax.management.remote.jmxmp;
                                javax.management.remote.rmi;
                                javax.management.remote.message;
                                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.nimbus;
                                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;
                                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;
                                javax.xml.stream.events;
                                javax.xml.stream.util;
                                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;
                                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.w3c.dom;
                                org.w3c.dom.bootstrap;
                                org.w3c.dom.events;
                                org.w3c.dom.ls;
                                org.w3c.dom.views;
                                org.xml.sax;
                                org.xml.sax.ext;
                                org.xml.sax.helpers;
                                org.glassfish.hk2.v3.admin;
                                org.glassfish.hk2.naming.impl;
                                org.glassfish.grizzly.http.server.res;
                                org.glassfish.hk2.security.ssl;
                                com.sun.org.apache.xerces.internal.jaxp;
                                com.sun.org.apache.xalan.internal.xsltc.trax;
                                com.sun.org.apache.xerces.internal.parsers;
                                com.ctc.wstx.stax;
                                org.glassfish.hk2.security.provider;
                                org.glassfish.hk2.security.auth.realm.file;
                                org.glassfish.hk2.security.auth.realm.certificate;
                                org.glassfish.hk2.security;
                                com.sun.faces.config;
                                com.sun.jersey.server.impl.container.servlet;
                                org.apache.jasper.runtime;
                                com.sun.xml.ws.transport.http.servlet;
                                org.apache.jasper.servlet;
                                resolution:=optional
                            </value>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Bundle-SymbolicName>GlassFish-Application-Common-Module-Fragment</Bundle-SymbolicName>
                            <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
                            <Fragment-Host>GlassFish-Application-Common-Module</Fragment-Host>
                            <Bundle-Name>${project.name}</Bundle-Name>
                            <!-- This is the most important attribute of this bundle
                                 We currently import all EE8 APIs. We could include some appserver pkgs as well.
                                 Tune this as per performance requirement.
                            -->
                            <Import-Package>${osgi.import.packages}</Import-Package>
                            <Bundle-Description>${project.description}</Bundle-Description>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
