# List of Apache Felix downloads: data for the downloads.adoc page.

# The contents of this file are queried by the jsonpathTable2 uses in downloads.adoc
# and rendered into tables.

# Each section (framework, subprojects, etc) has the same structure.
# Entries in a section have:
# title
# artifactid
# version
# jar (optional) (set to false if there is no binary)
# changelog (path from https://github.com/apache to the changelog file, or false if no changelog)
# targz (optional) (set to false if there is no source tar.gz)
# source_classifier
# classifier (optional) (not currently used in table)

# (1) Felix Framework Distribution version
framework:
  - title: Framework
    artifactId: org.apache.felix.main.distribution
    version: 7.0.5
    changelog: felix-dev/blob/master/framework/doc/changelog.txt

subprojects:
# no bundle under this name, no source-release under org.apache.felix.atomos. ???
  - title: Atomos
    artifactId: atomos-distribution
    version: 1.0.0
    jar: false
    source_classifier: source-release
    changelog: false

  - title: Bundle Repository
    artifactId: org.apache.felix.bundlerepository
    version: 2.0.10
    source_classifier: source-release
    changelog: felix-dev/blob/master/bundlerepository/doc/changelog.txt

  - title: CM Json
    artifactId: org.apache.felix.cm.json
    version: 1.0.6
    source_classifier: source-release
    changelog: false

  - title: Configuration Admin
    artifactId: org.apache.felix.configadmin
    version: 1.9.22
    source_classifier: source-release
    changelog: felix-dev/blob/master/configadmin/changelog.txt

  - title: Configurator
    artifactId: org.apache.felix.configurator
    version: 1.0.14
    source_classifier: source-release
    changelog: false

  - title: Configuration Admin Interpolation Plugin
    artifactId: org.apache.felix.configadmin.plugin.interpolation
    version: 1.2.2
    source_classifier: source-release
    changelog: false

  - title: Converter
    artifactId: org.apache.felix.converter
    version: 1.0.12
    source_classifier: source-release
    changelog: false

  - title: Coordinator
    artifactId: org.apache.felix.coordinator
    version: 1.0.2
    source_classifier: source-release
    changelog: false

  - title: Dependency Manager 4
    artifactId: org.apache.felix.dependencymanager
    version: r16
    source_classifier: src
    classifier: bin
    targz: false
    changelog: felix-dev/blob/master/dependencymanager/org.apache.felix.dependencymanager/changelog.txt

#TODO remove
  - title: Deployment Admin
    artifactId: org.apache.felix.deploymentadmin
    version: 0.9.10
    source_classifier: source-release
    changelog: felix-dev/blob/master/deploymentadmin/deploymentadmin/changelog.txt

  - title: Event Admin
    artifactId: org.apache.felix.eventadmin
    version: 1.6.2
    source_classifier: source-release
    changelog: felix-dev/blob/master/eventadmin/impl/changelog.txt

  - title: File Install
    artifactId: org.apache.felix.fileinstall
    version: 3.6.4
    source_classifier: source-release
    changelog: felix-dev/blob/master/fileinstall/doc/changelog.txt

  - title: Framework
    artifactId: org.apache.felix.framework
    version: 7.0.5
    source_classifier: source-release
    changelog: felix-dev/blob/master/framework/doc/changelog.txt

  - title: Framework Security
    artifactId: org.apache.felix.framework.security
    version: 2.8.3
    source_classifier: source-release
    changelog: felix-dev/blob/master/framework.security/doc/changelog.txt

  - title: Gogo Command
    artifactId: org.apache.felix.gogo.command
    version: 1.1.2
    source_classifier: project
    changelog: felix-dev/blob/master/gogo/command/doc/changelog.txt

  - title: Gogo JLine
    artifactId: org.apache.felix.gogo.jline
    version: 1.1.8
    source_classifier: project
    changelog: felix-dev/blob/master/gogo/jline/doc/changelog.txt

  - title: Gogo Runtime
    artifactId: org.apache.felix.gogo.runtime
    version: 1.1.4
    source_classifier: project
    changelog: felix-dev/blob/master/gogo/runtime/doc/changelog.txt

  - title: Gogo Shell
    artifactId: org.apache.felix.gogo.shell
    version: 1.1.4
    source_classifier: project
    changelog: felix-dev/blob/master/gogo/shell/doc/changelog.txt

  - title: Health Check Annotations
    artifactId: org.apache.felix.healthcheck.annotation
    version: 2.0.0
    source_classifier: project
    changelog: false

  - title: Health Check API
    artifactId: org.apache.felix.healthcheck.api
    version: 2.0.4
    source_classifier: project
    changelog: false

  - title: Health Check Core
    artifactId: org.apache.felix.healthcheck.core
    version: 2.0.14
    source_classifier: project
    changelog: false

  - title: Health Check General Checks
    artifactId: org.apache.felix.healthcheck.generalchecks
    version: 3.0.2
    source_classifier: project
    changelog: false

  - title: Health Check Webconsole Plugin
    artifactId: org.apache.felix.healthcheck.webconsoleplugin
    version: 2.0.2
    source_classifier: project
    changelog: false

  - title: HTTP Service Base
    artifactId: org.apache.felix.http.base
    version: 4.2.0
    source_classifier: source-release
    changelog: false

  - title: HTTP Service Bridge
    artifactId: org.apache.felix.http.bridge
    version: 4.2.0
    source_classifier: source-release
    changelog: false

  - title: HTTP Service Jetty
    artifactId: org.apache.felix.http.jetty
    version: 4.2.0
    source_classifier: source-release
    changelog: false

  - title: HTTP Service Proxy
    artifactId: org.apache.felix.http.proxy
    version: 3.0.6
    source_classifier: source-release
    changelog: false

  - title: HTTP Service SSL filter
    artifactId: org.apache.felix.http.sslfilter
    version: 1.2.6
    source_classifier: source-release
    changelog: false

  - title: HTTP Service Whiteboard
    artifactId: org.apache.felix.http.whiteboard
    version: 4.0.0
    source_classifier: source-release
    changelog: false

  - title: HTTP Servlet 2.6 + 3.0 + 4.0 + 5.0 API
    artifactId: org.apache.felix.http.servlet-api
    version: 2.0.0
    source_classifier: source-release
    changelog: false

  - title: Inventory Printer
    artifactId: org.apache.felix.inventory
    version: 1.0.6
    source_classifier: source-release
    changelog: felix-dev/blob/master/inventory/changelog.txt

  - title: Log
    artifactId: org.apache.felix.log
    version: 1.2.2
    source_classifier: project
    changelog: felix-dev/blob/master/log/doc/changelog.txt

  - title: Log Extension
    artifactId: org.apache.felix.log.extension
    version: 1.0.0
    source_classifier: source-release
    changelog: felix-dev/blob/master/log.extension/doc/changelog.txt

  - title: Logback
    artifactId: org.apache.felix.logback
    version: 1.0.2
    source_classifier: source-release
    changelog: felix-dev/blob/master/logback/doc/changelog.txt

  - title: Main
    artifactId: org.apache.felix.main
    version: 7.0.5
    source_classifier: project
    changelog: felix-dev/blob/master/main/doc/changelog.txt

  - title: Metatype
    artifactId: org.apache.felix.metatype
    version: 1.2.4
    source_classifier: source-release
    changelog: felix-dev/blob/master/metatype/changelog.txt

#TODO remove
  - title: OSGi OBR service API
    artifactId: org.osgi.service.obr
    version: 1.0.2
    source_classifier: project
    changelog: false

  - title: Remote Shell
    artifactId: org.apache.felix.shell.remote
    version: 1.1.2
    source_classifier: project
    changelog: felix-dev/blob/master/shell.remote/doc/changelog.txt

  - title: Resolver
    artifactId: org.apache.felix.resolver
    version: 2.0.2
    source_classifier: source-release
    changelog: felix-dev/blob/master/resolver/doc/changelog.txt

  - title: SCR (Declarative Services)
    artifactId: org.apache.felix.scr
    version: 2.2.0
    source_classifier: source-release
    changelog: felix-dev/blob/master/scr/changelog.txt

  - title: SCR Compat (Declarative Services)
    artifactId: org.apache.felix.scr.compat
    version: 1.0.4
    source_classifier: source-release
    changelog: felix-dev/blob/master/scr-compat/changelog.txt

  - title: SCR Ext Anno
    artifactId: org.apache.felix.scr.ext.anno
    version: 1.0.0
    source_classifier: source-release
    changelog: false

#TODO remove ??
  - title: SCR Annotations
    artifactId: org.apache.felix.scr.annotations
    version: 1.12.0
    source_classifier: source-release
    changelog: felix-dev/blob/master/tools/org.apache.felix.scr.annotations/changelog.txt

#TODO remove ??
  - title: SCR DS Annotations
    artifactId: org.apache.felix.scr.ds-annotations
    version: 1.2.10
    source_classifier: source-release
    changelog: felix-dev/blob/master/tools/org.apache.felix.scr.ds-annotations/changelog.txt

#TODO remove ??
  - title: SCR Generator
    artifactId: org.apache.felix.scr.generator
    version: 1.18.4
    source_classifier: project
    changelog: felix-dev/blob/master/tools/org.apache.felix.scr.generator/changelog.txt

  - title: Shell
    artifactId: org.apache.felix.shell
    version: 1.4.3
    source_classifier: project
    changelog: felix-dev/blob/master/shell/doc/changelog.txt

  - title: Shell Text UI
    artifactId: org.apache.felix.shell.tui
    version: 1.4.1
    source_classifier: project
    changelog: felix-dev/blob/master/shell.tui/doc/changelog.txt

  - title: Utils
    artifactId: org.apache.felix.utils
    version: 1.11.0
    source_classifier: source-release
    changelog: felix-dev/blob/master/utils/doc/changelog.txt

  - title: Web Console
    artifactId: org.apache.felix.webconsole
    version: 4.8.2
    source_classifier: source-release
    changelog: felix-dev/blob/master/webconsole/changelog.txt

  - title: Web Console (all-in-one bundle)
    artifactId: org.apache.felix.webconsole
    version: 4.7.0
    classifier: all
    source_classifier: source-release
    changelog: felix-dev/blob/master/webconsole/changelog.txt

  - title: Web Console DS Plugin
    artifactId: org.apache.felix.webconsole.plugins.ds
    version: 2.1.0
    source_classifier: source-release
    changelog: felix-dev/blob/master/webconsole-plugins/ds/changelog.txt

  - title: Web Console Event Admin Plugin
    artifactId: org.apache.felix.webconsole.plugins.event
    version: 1.1.8
    source_classifier: source-release
    changelog: felix-dev/blob/master/webconsole-plugins/event/changelog.txt

  - title: Web Console Memory Usage Plugin
    artifactId: org.apache.felix.webconsole.plugins.memoryusage
    version: 1.0.10
    source_classifier: source-release
    changelog: felix-dev/blob/master/webconsole-plugins/memoryusage/changelog.txt

  - title: Web Console OBR Plugin
    artifactId: org.apache.felix.webconsole.plugins.obr
    version: 1.0.4
    source_classifier: source-release
    changelog: felix-dev/blob/master/webconsole-plugins/obr/changelog.txt

  - title: Web Console PackageAdmin Plugin
    artifactId: org.apache.felix.webconsole.plugins.packageadmin
    version: 1.0.4
    source_classifier: source-release
    changelog: felix-dev/blob/master/webconsole-plugins/packageadmin/changelog.txt

  - title: Web Console Script Console Plugin
    artifactId: org.apache.felix.webconsole.plugins.scriptconsole
    version: 1.0.2
    source_classifier: project
    changelog: felix-dev/blob/master/webconsole-plugins/script-console/changelog.txt

  - title: Web Console ServiceDiagnostics Plugin
    artifactId: org.apache.felix.servicediagnostics.plugin
    version: 0.1.3
    source_classifier: source-release
    changelog: felix-dev/blob/master/webconsole-plugins/servicediagnostics/changelog.txt

  - title: Web Console Subsystems Plugin
    artifactId: org.apache.felix.webconsole.plugins.subsystem
    version: 0.1.0
    source_classifier: source-release
    changelog: false

# (3) Maven Plugins
maven_plugins:
  - title: Atomos Maven Plugin
    artifactId: atomos-maven-plugin
    version: 0.9.0
    changelog: false

  - title: Maven Bundle Plugin
    artifactId: maven-bundle-plugin
    version: 5.1.1
    changelog: felix-dev/blob/master/tools/maven-bundle-plugin/changelog.txt

  - title: Maven OBR Plugin
    artifactId: maven-obr-plugin
    version: 1.2.0
    changelog: false

  - title: Maven SCR Plugin
    artifactId: maven-scr-plugin
    version: 1.26.4
    changelog: felix-dev/blob/master/tools/maven-scr-plugin/changelog.txt

  - title: OSGi Check Maven Plugin
    artifactId: osgicheck-maven-plugin
    version: 0.1.0
    changelog: false

# (4) Ant Tasks (currently unused)
ant_tasks:
  - title: SCR Ant Task
    artifactId: org.apache.felix.scr.ant
    version: 1.18.0

# (5) Bnd PLugins (currently unused)
bnd-plugins:
  - title: SCR bnd Plugin
    artifactId: org.apache.felix.scr.bnd
    version: 1.9.6

