<?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>6.2.2-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.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>
