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