#
# 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
#

Bundle-Activator: org.glassfish.common.util.CommonUtilsActivator
-exportcontents: \
                        com.sun.appserv.ha.spi; \
                        com.sun.appserv.ha.util; \
                        com.sun.appserv.management.client.prefs; \
                        com.sun.appserv.server.util; \
                        com.sun.appserv.util.cache; \
                        com.sun.appserv.util.cache.mbeans; \
                        com.sun.common.util.logging; \
                        com.sun.enterprise.admin.monitor.callflow; \
                        com.sun.enterprise.loader; \
                        com.sun.enterprise.security.integration; \
                        com.sun.enterprise.security.store; \
                        com.sun.enterprise.spi.io; \
                        com.sun.enterprise.universal; \
                        com.sun.enterprise.universal.collections; \
                        com.sun.enterprise.universal.glassfish; \
                        com.sun.enterprise.universal.i18n; \
                        com.sun.enterprise.universal.io; \
                        com.sun.enterprise.universal.process; \
                        com.sun.enterprise.universal.xml; \
                        com.sun.enterprise.util; \
                        com.sun.enterprise.util.diagnostics; \
                        com.sun.enterprise.util.i18n; \
                        com.sun.enterprise.util.io; \
                        com.sun.enterprise.util.net; \
                        com.sun.enterprise.util.reflect; \
                        com.sun.enterprise.util.shared; \
                        com.sun.enterprise.util.uuid; \
                        com.sun.enterprise.util.zip; \
                        com.sun.logging; \
                        org.glassfish.admin.payload; \
                        org.glassfish.common.util; \
                        org.glassfish.common.util.admin; \
                        org.glassfish.common.util.io; \
                        org.glassfish.common.util.timer; \
                        org.glassfish.quality; \
                        org.glassfish.security.common; \
                        com.sun.logging.enterprise.system.core; \
                        org.glassfish.server; version=${project.osgi.version}
