#
# Copyright (c) 2010, 2018 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
#

-exportcontents: \
                        com.sun.enterprise.deployment; \
                        com.sun.enterprise.deployment.annotation.handlers; \
                        com.sun.enterprise.deployment.annotation.impl; \
                        com.sun.enterprise.deployment.types; \
                        com.sun.enterprise.deployment.annotation.context; \
                        com.sun.enterprise.deployment.annotation.introspection; \
                        com.sun.enterprise.deployment.archivist; \
                        com.sun.enterprise.deployment.interfaces; \
                        com.sun.enterprise.deployment.io; \
                        com.sun.enterprise.deployment.io.runtime; \
                        com.sun.enterprise.deployment.node; \
                        com.sun.enterprise.deployment.node.runtime; \
                        com.sun.enterprise.deployment.node.runtime.common; \
                        com.sun.enterprise.deployment.node.runtime.common.wls; \
                        com.sun.enterprise.deployment.node.ws; \
                        com.sun.enterprise.deployment.runtime; \
                        com.sun.enterprise.deployment.runtime.application; \
                        com.sun.enterprise.deployment.runtime.application.wls; \
                        com.sun.enterprise.deployment.runtime.common; \
                        com.sun.enterprise.deployment.runtime.common.wls; \
                        com.sun.enterprise.deployment.runtime.connector; \
                        com.sun.enterprise.deployment.runtime.web; \
                        com.sun.enterprise.deployment.runtime.ws; \
                        com.sun.enterprise.deployment.util; \
                        com.sun.enterprise.deployment.web; \
                        com.sun.enterprise.deployment.xml; \
                        com.sun.enterprise.repository; version=${project.osgi.version}

Import-Package: \
                        javax.rmi.CORBA, \
                        *
