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