You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2018/07/25 12:23:26 UTC

[sling-org-apache-sling-feature] branch master updated: Add proposal for application configuration

This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature.git


The following commit(s) were added to refs/heads/master by this push:
     new 83b54cf  Add proposal for application configuration
83b54cf is described below

commit 83b54cfcd62265e7536b563ef6b710ef204939cb
Author: Carsten Ziegeler <cz...@adobe.com>
AuthorDate: Wed Jul 25 14:23:20 2018 +0200

    Add proposal for application configuration
---
 appconf.md   | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 prototype.md | 31 +-------------------------
 readme.md    |  1 +
 3 files changed, 74 insertions(+), 30 deletions(-)

diff --git a/appconf.md b/appconf.md
new file mode 100644
index 0000000..d1ad3ea
--- /dev/null
+++ b/appconf.md
@@ -0,0 +1,72 @@
+# Provisioning Applications Proposal
+
+There are use case where you want to describe a whole application based on features. In addition some parts might to be optional.
+
+A application configuration for such use cases could look like this:
+
+    {
+        "application" : [
+            "org.apache.sling:org.apache.sling.launchpad:10"
+        ],
+        "repository" : [
+            "org.apache.sling:org.apache.sling.portal:1.0."
+        ],
+        "options" : {
+           "jsp" : {
+               "features" : [
+                   "org.apache.sling:org.apache.sling.scripting.jsp:1.0.0"                   
+               ]
+           },
+           "author" : {
+               "features" : [
+                   "org.apache.sling:org.apache.sling.cms:1.0.0"                                    
+               ],
+               "variables" : {
+                   "service_id" : "author"
+               },
+               "activation" : {
+                   "publish" : false,
+                   "jsp" : true
+               }
+           },
+           "publish" : {
+               "features" : [
+                   "org.apache.sling:org.apache.sling.cache:1.3.6"                                    
+               ],
+               "variables" : {
+                   "service_id" : "publish"
+               },
+               "activation" : {
+                   "author" : false                
+               }
+           },
+           "samples" : {
+               "options" : {
+                    "author" : {
+                        "features" : [
+                            "org.apache.sling:org.apache.sling.samples.author:1.0.0"
+                        ]
+                    },
+                    "publish" : {
+                        "features" : [
+                            "org.apache.sling:org.apache.sling.samples.publish:1.0.0"
+                        ]
+                    }
+                }
+            }
+        },
+        "defaults" : {
+            "options": ["author"]
+        },
+        "framework" : {
+            "id" : "org.apache.felix:org.apache.felix.framework:6.0.0"
+        }
+    }
+
+The *application* section list all features that are always used for the application. The features listed in the repository section are only pulled in if another included feature has a requirement for them.
+
+The options section contains labeled options. An option has a list of features and optionally an activation section which either enables or disables other options. Options can be nested, allowing for sub options.
+
+An option can also set additional variables - which in turn can be used within the included features.
+
+The defaults section specifies the options activated by default and the framework section defines the framework to be used.
diff --git a/prototype.md b/prototype.md
index 76f13fd..57d90eb 100644
--- a/prototype.md
+++ b/prototype.md
@@ -218,36 +218,7 @@ To avoid this, a feature might contain an additional section, named "reqscaps" (
         }
 
 
-# Appendix A : Provisioning Applications
-
-An application jar can contain a set of features (including the listed artifacts).
-
-An optional application configuration further defines the possibilites:
-
-    {
-         "features" : [
-             "org.apache.sling:org.apache.sling.launchpad:10"
-         ],
-         "options" : [
-             "org.apache.sling:org.apache.sling.scripting.jsp:1.0.0",
-             {
-                 "id" : "org.apache.sling:org.apache.sling.scripting.htl:1.0.0",
-                 "tag": "htl"
-             }
-         ],
-         "defaults" : {
-             "auto-add-options": true,
-             "tags" : ["htl"]
-         },
-         "framework" : {
-             "id" : "org.apache.felix:org.apache.felix.framework:5.6.4"
-         }
-    }
-
-Such a configuration is required for an application, at least one feature needs to be listed in either the features or the options section.
-All features listed in the features section will be added to the application, the ones listed in options are optional and depending on the settings and user input will either be added or left out. In addition all available features of an application will be used to make the application runnable (resolvable).
-
-# Appendix B : Apache Sling's Provisioning Model
+# Appendix A : Apache Sling's Provisioning Model
 
 The documentation for Apache Sling's provisioning model can be found here: https://sling.apache.org/documentation/development/slingstart.html
 
diff --git a/readme.md b/readme.md
index 9a0e63f..5fa6dfc 100644
--- a/readme.md
+++ b/readme.md
@@ -11,3 +11,4 @@ This project aims to define a common OSGi feature model to build an OSGi applica
 
 * [Prototype](prototype.md)
 * [API Controller Proposal](apicontroller.md)
+* [Application Configuration Proposal](appconf.md)