#
# 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.
#

# --------------------------------------------------------------------------------------------------------------------
# The following bundles will always be instantiated
# --------------------------------------------------------------------------------------------------------------------
# handler service (extender for url stream handlers)
handler.service=org.ops4j.pax.runner.handler.internal.Activator
# provision service (extender for scanners)
provision.service=org.ops4j.pax.scanner.internal.Activator
# platform service (extender for platforms)
platform.service=org.ops4j.pax.runner.platform.internal.Activator

# --------------------------------------------------------------------------------------------------------------------
# Known handlers
# --------------------------------------------------------------------------------------------------------------------
# assembly protocol handler
handler.assembly=org.ops4j.pax.url.assembly.internal.Activator
# cache protocol handler
handler.cache=org.ops4j.pax.url.cache.internal.Activator
# classpath protocol handler
handler.classpath=org.ops4j.pax.url.classpath.internal.Activator
# dir protocol handler
handler.dir=org.ops4j.pax.url.dir.internal.Activator
# mvn protocol handler
handler.mvn=org.ops4j.pax.url.mvn.internal.Activator
# link protocol handler
handler.link=org.ops4j.pax.url.link.internal.Activator
# obr protocol handler
handler.obr=org.ops4j.pax.url.obr.internal.Activator
# war protocol handler
handler.war=org.ops4j.pax.url.war.internal.Activator
# wrap protocol handler
handler.wrap=org.ops4j.pax.url.wrap.internal.Activator

# --------------------------------------------------------------------------------------------------------------------
# Known scanners
# --------------------------------------------------------------------------------------------------------------------
# scan-bundle
scanner.bundle=org.ops4j.pax.scanner.bundle.internal.Activator
# scan-composite
scanner.composite=org.ops4j.pax.scanner.composite.internal.Activator
# scan-dir
scanner.dir=org.ops4j.pax.scanner.dir.internal.Activator
# scan-file
scanner.features=org.ops4j.pax.scanner.features.internal.Activator
# scan-file
scanner.file=org.ops4j.pax.scanner.file.internal.Activator
# scan-obr
scanner.obr=org.ops4j.pax.scanner.obr.internal.Activator
# scan-pom
scanner.pom=org.ops4j.pax.scanner.pom.internal.Activator

# --------------------------------------------------------------------------------------------------------------------
# Known platforms
# --------------------------------------------------------------------------------------------------------------------
## Equinox
platform.equinox.3.2.1=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.3.0=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.3.1=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.3.2=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.4.0=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.4.1=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.4.2=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.5.0=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.5.1=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.6.0=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.SNAPSHOT=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.V43PROTOTYPE-3.6.0.201003231329=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
platform.equinox.3.7.0.V20110613=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
# Felix
platform.felix.1.0.0=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.0.1=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.0.3=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.0.4=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.2.0=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.2.1=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.2.2=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.4.0=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.4.1=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.6.0=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.6.1=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.8.0=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.1.8.1=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.2.0.0=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.2.0.1=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.2.0.2=org.ops4j.pax.runner.platform.felix.internal.Activator
platform.felix.SNAPSHOT=org.ops4j.pax.runner.platform.felix.internal.Activator
# Knopflerfish
platform.knopflerfish.2.0.0=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.0.1=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.0.2=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.0.3=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.0.4=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.0.5=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.1.0=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.1.1=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.2.0=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.3.0=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.3.1=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.3.2=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.2.3.3=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.3.0.0=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
platform.knopflerfish.SNAPSHOT=org.ops4j.pax.runner.platform.knopflerfish.internal.Activator
#Concierge
platform.concierge.1.0.0=org.ops4j.pax.runner.platform.concierge.internal.Activator
platform.concierge.SNAPSHOT=org.ops4j.pax.runner.platform.concierge.internal.Activator

# --------------------------------------------------------------------------------------------------------------------
# Aditional Services
# --------------------------------------------------------------------------------------------------------------------
service.obr=org.apache.felix.bundlerepository.Activator

# --------------------------------------------------------------------------------------------------------------------
# Default values.
# Default values are used in case that an option / configuration property is not set.
# --------------------------------------------------------------------------------------------------------------------
# defaults for runner options
# default list of handlers
default.handlers=handler.mvn,handler.classpath,handler.war,handler.wrap,handler.obr,handler.link,handler.cache,handler.assembly,handler.dir
# default list of scanners
default.scanners=scanner.bundle,scanner.composite,scanner.dir,scanner.features,scanner.file,scanner.obr,scanner.pom
# default platfom
default.platform=platform.felix
# default felix platform version
default.platform.felix.version=2.0.2
# default equinox platform version
default.platform.equinox.version=3.5.1
# default knopflerfish platform version
default.platform.knopflerfish.version=2.3.3
# default concierge platform version
default.platform.concierge.version=1.0.0
# default list of additional services
default.services=service.obr
# default obr repositories
default.obr.repository.url=http://bundles.osgi.org/obr/browse?_xml=1&cmd=repository
# default profiles repository
default.profilesRepositories=http://scm.ops4j.org/repos/ops4j/projects/pax/runner-repository
# default group id
default.profilesGroupId=org.ops4j.pax.runner.profiles
# default "snapshot" platform definition repository
default.snapshotsRepository=http://scm.ops4j.org/repos/ops4j/projects/pax/runner-repository
# default "snapshot" Felix platform definition URL
default.felix.snapshot.definition.url=mvn:${snapshotsRepository}!org.ops4j.pax.runner.platforms/felix//xml
# default "snapshot" Equinox platform definition URL
default.equinox.snapshot.definition.url=mvn:${snapshotsRepository}!org.ops4j.pax.runner.platforms/equinox//xml
# default "snapshot" Knopflerfish platform definition URL
default.knopflerfish.snapshot.definition.url=mvn:${snapshotsRepository}!org.ops4j.pax.runner.platforms/knopflerfish//xml
# default "snapshot" Concierge platform definition URL
default.concierge.snapshot.definition.url=mvn:${snapshotsRepository}!org.ops4j.pax.runner.platforms/concierge//xml
# default working directory
default.workingDirectory=runner
# default caching directory
default.org.ops4j.pax.url.cache.workingDirectory=${workingDirectory}/cache
# default platform working directory
default.org.ops4j.pax.runner.platform.workingDirectory=${workingDirectory}


# --------------------------------------------------------------------------------------------------------------------
# Configuration properties alias
# Alias are used to transform configuration properties from the fully qualified ones to simple option name or
# to convert simple values from start arguments to the actual ones.
# --------------------------------------------------------------------------------------------------------------------
# aliases for runner options
alias.platform=p
alias.platform.equinox=platform.equinox
alias.platform.e=platform.equinox
alias.platform.eq=platform.equinox
alias.platform.felix=platform.felix
alias.platform.f=platform.felix
alias.platform.knopflerfish=platform.knopflerfish
alias.platform.k=platform.knopflerfish
alias.platform.kf=platform.knopflerfish
alias.platform.concierge=platform.concierge
alias.platform.c=platform.concierge
alias.version=v
alias.snapshot=s
alias.workingDirectory=dir

# aliases for handlers
alias.org.ops4j.pax.url.mvn.certificateCheck=certificateCheck
alias.org.ops4j.pax.url.mvn.defaultRepositories=defaultRepositories,dr
alias.org.ops4j.pax.url.mvn.localRepository=localRepository,lr,maven.repo.local
alias.org.ops4j.pax.url.mvn.repositories=repositories,repos
alias.org.ops4j.pax.url.mvn.settings=settings
alias.org.ops4j.pax.url.mvn.useFallbackRepositories=useFallbackRepositories,ufr
alias.org.ops4j.pax.url.obr.certificateCheck=certificateCheck
alias.org.ops4j.pax.url.war.certificateCheck=certificateCheck
alias.org.ops4j.pax.url.wrap.certificateCheck=certificateCheck
alias.org.ops4j.pax.scanner.composite.certificateCheck=certificateCheck
alias.org.ops4j.pax.scanner.features.certificateCheck=certificateCheck

# aliases for platform options
alias.org.ops4j.pax.runner.platform.bootDelegation=bootDelegation,bd
alias.org.ops4j.pax.runner.platform.bundleStartLevel=bundleStartLevel,bsl
alias.org.ops4j.pax.runner.platform.classpath=classPath,cp
alias.org.ops4j.pax.runner.platform.console=console
alias.org.ops4j.pax.runner.platform.definitionURL=definitionURL
alias.org.ops4j.pax.runner.platform.frameworkProfile=frameworkProfile,fp
alias.org.ops4j.pax.runner.platform.ee=ee
alias.org.ops4j.pax.runner.platform.javaHome=javaHome,home
alias.org.ops4j.pax.runner.platform.overwrite=overwrite
alias.org.ops4j.pax.runner.platform.overwriteUserBundles=overwriteUserBundles
alias.org.ops4j.pax.runner.platform.overwriteSystemBundles=overwriteSystemBundles
alias.org.ops4j.pax.runner.platform.profileStartLevel=profileStartLevel,psl
alias.org.ops4j.pax.runner.platform.startLevel=startLevel,sl
alias.org.ops4j.pax.runner.platform.systemPackages=systemPackages,sp
alias.org.ops4j.pax.runner.platform.usePersistedState=usePersistedState,ups
alias.org.ops4j.pax.runner.platform.vmOptions=vmOptions,vmo
alias.org.ops4j.pax.runner.platform.debugClassLoading=debugClassLoading,dcl
alias.org.ops4j.pax.runner.platform.downloadFeedback=downloadFeedback,df
alias.org.ops4j.pax.runner.platform.autoWrap=autoWrap
alias.org.ops4j.pax.runner.platform.keepOriginalUrls=keepOriginalUrls,kou
alias.org.ops4j.pax.runner.platform.bundleValidation=bundleValidation
alias.org.ops4j.pax.runner.platform.skipInvalidBundles=skipInvalidBundles,sib
alias.org.ops4j.pax.runner.platform.useAbsoluteFilePaths=useAbsoluteFilePaths,absoluteFilePaths,uafp

# aliases for scanners
alias.org.ops4j.pax.scanner.bundle.start=start
alias.org.ops4j.pax.scanner.composite.start=start
alias.org.ops4j.pax.scanner.dir.start=start
alias.org.ops4j.pax.scanner.features.start=start
alias.org.ops4j.pax.scanner.file.start=start
alias.org.ops4j.pax.scanner.obr.start=start
alias.org.ops4j.pax.scanner.pom.start=start

# aliases for additional services
alias.obr.repository.url=obrRepositories|obrRepos
