#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common Development
# and Distribution License("CDDL") (collectively, the "License").  You
# may not use this file except in compliance with the License.  You can
# obtain a copy of the License at
# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
# or packager/legal/LICENSE.txt.  See the License for the specific
# language governing permissions and limitations under the License.
#
# When distributing the software, include this License Header Notice in each
# file and include the License file at packager/legal/LICENSE.txt.
#
# GPL Classpath Exception:
# Oracle designates this particular file as subject to the "Classpath"
# exception as provided by Oracle in the GPL Version 2 section of the License
# file that accompanied this code.
#
# Modifications:
# If applicable, add the following below the License Header, with the fields
# enclosed by brackets [] replaced by your own identifying information:
# "Portions Copyright [year] [name of copyright owner]"
#
# Contributor(s):
# If you wish your version of this file to be governed by only the CDDL or
# only the GPL Version 2, indicate your decision by adding "[Contributor]
# elects to include this software in this distribution under the [CDDL or GPL
# Version 2] license."  If you don't indicate a single choice of license, a
# recipient has the option to distribute your version of this file under
# either the CDDL, the GPL Version 2 or to extend the choice of license to
# its licensees as provided above.  However, if you add GPL Version 2 code
# and therefore, elected the GPL Version 2 license, then the option applies
# only if the new code is made subject to such option by the copyright
# holder.
#
#
# This file incorporates work covered by the following copyright and
# permission notice:
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#


#
# Framework config properties.
#

# Packages exported by system bundle when framework is Felix.
# Unlike Equinox, Felix requires us to list all packages from felix.jar 
# while using org.osgi.framework.system.packages property.
Felix.system.packages=\
 org.osgi.framework; version=1.6.0, \
 org.osgi.framework.launch; version=1.0.0, \
 org.osgi.framework.wiring; version=1.0.0, \
 org.osgi.framework.startlevel; version=1.0.0, \
 org.osgi.framework.hooks.bundle; version=1.0.0, \
 org.osgi.framework.hooks.resolver; version=1.0.0, \
 org.osgi.framework.hooks.service; version=1.1.0, \
 org.osgi.framework.hooks.weaving; version=1.0.0, \
 org.osgi.service.packageadmin; version=1.2.0, \
 org.osgi.service.startlevel; version=1.1.0, \
 org.osgi.service.url; version=1.0.0, \
 org.osgi.util.tracker; version=1.5.0, \
 ${extra-system-packages}

# Packages exported by system bundle when framework is Equinox.
# Unlike Felix, It is not required to explicitly mention the packages exported by equinox framework jar.
# Equinox automatically adds packages from equinox.jar to exported package list.
Equinox.system.packages=${extra-system-packages}

org.osgi.framework.system.packages=${${GlassFish_Platform}.system.packages}

# embeddable package version must match what is found in core/bootstrap/osgi.bundle file. See that file more details.
extra-system-packages=${jre-${java.specification.version}}, org.glassfish.embeddable;org.glassfish.embeddable.spi;version=3.1.1

# Although Eclipselink imports these packages, in typical GlassFish installation,
# Oracle JDBC driver may not be available as a bundle, so we ask user to install it in 
# java.ext.dirs and the bootdelegation helps there.
eclipselink.bootdelegation=oracle.sql, oracle.sql.*

# There is no need to use bootdelegation except for the following issues:
# 1. EclipseLink
# 4. NetBeans profiler packages exist in parent class loader (see issue #8612)
# 5. BTrace exists in bootclasspath.
org.osgi.framework.bootdelegation=${eclipselink.bootdelegation}, \
                                  com.sun.btrace, com.sun.btrace.*, \
                                  org.netbeans.lib.profiler, org.netbeans.lib.profiler.*
                                  
# The OSGi R4.2 spec says boot delegation uses the boot class loader by default. We need
# to configure it to use the framework class loader because that class loader is
# configured with extra classes like jdk tools.jar, derby jars, etc. that must be
# made available in GlassFish to work.
org.osgi.framework.bundle.parent=framework

# We don't set this value here, as expanding GlassFish_Platform gives us a file name with upper case
# char in it. GlassFish file layout does not recommend use of upper case char, because some 
# platforms like Windows don't honor case in file names. So, we don't set the cache dir here.
# Instead, it is set in various PlatformHelper implementations.
#org.osgi.framework.storage=${com.sun.aas.instanceRoot}/osgi-cache/${GlassFish_Platform}/

# This is where we cache the inhabitants information
com.sun.enterprise.hk2.cacheDir=${org.osgi.framework.storage}

# Important Note about glassfish.osgi.auto.* properties.
# These properties are interpreted by our autoprocessor to install and start the configured list of bundles.
# There are three properties:
# glassfish.osgi.auto.install, glassfish.osgi.auto.start, glassfish.osgi.auto.start.level[.N]
# to control what gets installed in which order, what gets started and what should be the bundle's start level.
# glassfish.osgi.auto.install is used to configure a list of locations from where bundles will be installed.
# The order is important as bundle installation order is an input to package resolution process in OSGi.
# Since we want packages from endorsed bundles to be preferred over those exported by system bundle for 
# overlapping packages, we need to install and start endorsed bundles first. 
# Then we autostart GlassFish core bundles followed by optional services.
# The reason for using installRootURI is to make sure any char like white space is properly encoded.
glassfish.osgi.auto.install=${com.sun.aas.installRootURI}modules/endorsed/ \
                       ${com.sun.aas.installRootURI}modules/ \
                       ${com.sun.aas.installRootURI}modules/autostart/

core.bundles=${com.sun.aas.installRootURI}modules/osgi-adapter.jar \
             ${com.sun.aas.installRootURI}modules/glassfish.jar

osgi-ee.bundles=${com.sun.aas.installRootURI}modules/osgi-resource-locator.jar \
                             ${com.sun.aas.installRootURI}modules/org.apache.felix.configadmin.jar \
                             ${com.sun.aas.installRootURI}modules/autostart/ \
                             ${com.sun.aas.installRootURI}modules/org.apache.felix.fileinstall.jar

osgi-shell.bundles=\
                             ${com.sun.aas.installRootURI}modules/org.apache.felix.gogo.runtime.jar \
                             ${com.sun.aas.installRootURI}modules/org.apache.felix.gogo.command.jar \
                             ${com.sun.aas.installRootURI}modules/org.apache.felix.gogo.shell.jar \
                             ${com.sun.aas.installRootURI}modules/org.apache.felix.shell.remote.jar
                     
# This property is used to configure a list of bundles to be started by our autoprocessor.
# Eventual activation of the bundles depend on bundle's start level and activation policy.
glassfish.osgi.auto.start=${com.sun.aas.installRootURI}modules/endorsed/ \
		     ${core.bundles} \
		     ${osgi-ee.bundles} \
		     ${osgi-shell.bundles}

# List of bundles whose start level is 1
glassfish.osgi.auto.start.level.1=${core.bundles}

# List of bundles whose start level is 2
# For start up performance, we don't start optional bundles before start level 2.
glassfish.osgi.auto.start.level.2=${osgi-ee.bundles}

# List of bundles whose start level is 3
glassfish.osgi.auto.start.level.3=${osgi-shell.bundles}

# Final start level of OSGi framework. This is used by GlassFish launcher code
# to set the start level of the OSGi framework once server is up and running so that
# optional services can start. The initial start level of framework is controlled using
# the standard framework property called org.osgi.framework.startlevel.beginning
glassfish.osgi.start.level.final=2

# What should be the initial start level of framework. 
# For performance reason, initially we set the start level to 1 so that no optional
# bundles can get activated while server is still starting. Once server is started,
# the framework's start level is set to whatever is configured in glassfish.osgi.start.level.final property.
org.osgi.framework.startlevel.beginning=1

# Set bundle start level to be same or less than that of framework, 
# otherwise HK2 installed bundles won't be activated.
# See issue #5934
felix.startlevel.bundle=1

# log level 1: error, 2: warning, 3: info, 4: debug
felix.log.level=1

# The Felix launcher registers a shutdown hook to cleanly stop the framework
# by default, uncomment the following line to disable it.
# Since, GlassFish uses its own shutdown hook to stop the framework, we don't need this.
felix.shutdown.hook=false

#felix.service.urlhandlers=false

# See equinox bug #329314
osgi.resolver.preferSystemPackages=false

# See equinox bug #344850
osgi.compatibility.bootdelegation=false

#
# Java SE 6 platform packages. Taken from: http://java.sun.com/javase/6/docs/api/
# Don't add/remove any new package unless you find bugs.
# Since we don't know the actual package versions,
# we export most of them with default version.
jre-1.6=\
 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.rmi, \
 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.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; javax.transaction.xa, \
 javax.xml, \
 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.soap, \
 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.stub.java.rmi, \
 org.omg.CORBA, \
 org.omg.CORBA.DynAnyPackage, \
 org.omg.CORBA.ORBPackage, \
 org.omg.CORBA.TypeCodePackage, \
 org.omg.CORBA.portable, \
 org.omg.CORBA_2_3, \
 org.omg.CORBA_2_3.portable, \
 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.ServantLocatorPackage, \
 org.omg.PortableServer.portable, \
 org.omg.SendingContext, \
 org.w3c.dom, \
 org.w3c.dom.bootstrap, \
 org.w3c.dom.events, \
 org.w3c.dom.ls, \
 org.xml.sax, \
 org.xml.sax.ext, \
 org.xml.sax.helpers, ${endorsed-standard-packages}

endorsed-standard-packages=\
 javax.annotation, \
 javax.xml.bind, \
 javax.xml.bind.annotation, \
 javax.xml.bind.annotation.adapters, \
 javax.xml.bind.attachment, \
 javax.xml.bind.helpers, \
 javax.xml.bind.util, \
 javax.jws, \
 javax.jws.soap, \
 javax.xml.ws, \
 javax.xml.ws.handler, \
 javax.xml.ws.handler.soap, \
 javax.xml.ws.http, \
 javax.xml.ws.soap, \
 javax.xml.ws.spi, \
 javax.xml.ws.wsaddressing

#dtrace support 
jre-1.7=${jre-1.6},com.sun.tracing

# Bundle information optimization to improve performance
felix.cache.singlebundlefile=true

# Set this to true if you want to use JPA in Java SE mode in your OSGi bundles.
# See GLASSFISH-14134 for more details.
org.glassfish.osgjpa.extension.useHybridPersistenceProviderResolver=false

# When HybridPersistenceProviderResolver is used, it can be configured to use a cache. 
# Setting the next property to false, disables caching of providers.
org.glassfish.osgjpa.extension.hybridPersistenceProviderResolver.cachingEnabled=true

# We have stopped using FileInstall to monitor autostart/. Because we can't change domain.xml
# in 3.1.1, we have to rely on configuring FileInstall using this file.
felix.fileinstall.dir=${com.sun.aas.instanceRoot}/autodeploy/bundles/
felix.fileinstall.poll=5000
felix.fileinstall.log.level=3
felix.fileinstall.bundles.new.start=true
felix.fileinstall.bundles.startTransient=true
felix.fileinstall.disableConfigSave=false

# If we don't set this, when we run our tests in embedded mode, gogo shell stops the framework after running the login command.
gosh.args=--nointeractive
