blob: aff0e66ce92148b39efcbfe4d06731b0df35519f [file] [log] [blame]
{
// this is a comment
"id": "org.apache.sling:my.app:slingosgifeature:my-classifier:1.0",
"title": "A title for the feature. (optional)",
"description": "A description for the feature. (optional)",
"vendor": "The feature vendor, for example 'Apache Software Foundation'. (optional)",
"license": "The license of this feature file, for example 'ASL-2'. (optional)",
// A complete feature has no external dependencies
"complete": true,
// A final feature cannot be used as a prototype for another feature
"final": false,
// variables used in configuration and framework properties are substituted at launch time.
"variables": {
"cfgvar": "somedefault",
"org.abc.xyz": "1.2.3",
// When converting to provisioning model, if you need a special name
"provisioning.model.name": ":boot"
},
// A prototype is another feature that is used as a prototype for this one
// Bundles, configurations and framework properties can be removed from the
//prototype. Bundles with the same artifact ID defined in the feature override
// bundles with this artifact ID in the Prototype
"prototype":
{
"id": "org.apache.sling:some-other-feature:1.2.3",
"removals": {
"configurations": [],
"bundles": [],
"framework-properties": []
}
},
// Requirements over and above the requirements in the bundles referenced by
// feature.
"requirements": [
{
"namespace": "osgi.contract",
"directives": {
"filter": "(&(osgi.contract=JavaServlet)(version=3.1))"
}
}
],
// Capabilities over and above the capabilities provided by the bundles referenced
// by the feature.
"capabilities": [
{
"namespace": "osgi.implementation",
"attributes": {
"osgi.implementation": "osgi.http",
"version:Version": "1.1"
},
"directives": {
"uses": "javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard"
}
},
{
"namespace": "osgi.service",
"attributes": {
"objectClass:List<String>": "org.osgi.service.http.runtime.HttpServiceRuntime"
},
"directives": {
"uses": "org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto"
}
}
],
// Framework properties to be provided to the running OSGi Framework
"framework-properties": {
"foo": 1,
"org.osgi.framework.storage": "${tempdir}",
"org.apache.felix.scr.directory": "launchpad/scr"
},
// The bundles that are part of the feature. Bundles are referenced using Maven
// coordinates and can have additional metadata associated with them. Bundles can
// specified as either a simple string (the Maven coordinates of the bundle) or
// as an object with 'id' and additional metadata.
"bundles": [
{
"id": "org.apache.sling:security-server:2.2.0",
"hash": "4632463464363646436",
// This is the relative start order inside the feature
"start-order": 5
},
{
"id": "org.apache.sling:application-bundle:2.0.0",
"start-order": 10
},
"org.apache.sling:foo-xyz:1.2.3"
],
// The configurations are specified following the format defined by the OSGi Configurator
// specification: https://osgi.org/specification/osgi.cmpn/7.0.0/service.configurator.html
// Variables declared in the variables section can be used for late binding of variables
// they can be specified with the Launcher, or the default from the variables section is used.
// Factory configurations can be specified using the named factory syntax, which separates
// The factory PID and the name with a tilde '~'
"configurations": {
"my.pid": {
"foo": 5,
"something-enabled": false,
"bar": "${cfgvar}",
// The tempdir variable is not specified at the variables section.
// It needs to be provided at launch, otherwise the launch will stop.
"tempdir": "${tempdir}",
"number:Integer": 7
},
"my.factory.pid~name": {
"a.value":"yeah"
}
}
}