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/08/14 09:06:49 UTC
[sling-org-apache-sling-feature-modelconverter] branch master
updated: SLING-7823 : Handle special run modes for feature to provisioning
model conversion
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-modelconverter.git
The following commit(s) were added to refs/heads/master by this push:
new b95e983 SLING-7823 : Handle special run modes for feature to provisioning model conversion
b95e983 is described below
commit b95e9830ee51691255d24cb3ee047e8893bbe5c6
Author: Carsten Ziegeler <cz...@adobe.com>
AuthorDate: Tue Aug 14 11:06:44 2018 +0200
SLING-7823 : Handle special run modes for feature to provisioning model conversion
---
.../modelconverter/FeatureToProvisioning.java | 71 ++++++++++++++--------
1 file changed, 46 insertions(+), 25 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java b/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
index 14a5265..fa82663 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/FeatureToProvisioning.java
@@ -16,6 +16,23 @@
*/
package org.apache.sling.feature.modelconverter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonReader;
+import javax.json.JsonString;
+import javax.json.JsonValue;
+
import org.apache.sling.feature.Application;
import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Bundles;
@@ -41,23 +58,6 @@ import org.apache.sling.provisioning.model.io.ModelWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonReader;
-import javax.json.JsonString;
-import javax.json.JsonValue;
-
/** Converter that converts the feature model to the provisioning model.
*/
public class FeatureToProvisioning {
@@ -174,6 +174,8 @@ public class FeatureToProvisioning {
private static void convert(Feature f, KeyValueMap variables, Bundles bundles, Configurations configurations, KeyValueMap frameworkProps,
Extensions extensions, String outputFile, String [] runModes) {
+ final Map<String, Feature> additionalFeatures = new HashMap<>();
+
if (runModes != null && runModes.length == 0) {
runModes = null;
}
@@ -209,19 +211,35 @@ public class FeatureToProvisioning {
}
}
+ String[] bundleRunModes = runModes;
+ if (bundleRunModes == null) {
+ bundleRunModes = getRunModes(bundle);
+ }
+
int startLevel;
String sl = bundle.getMetadata().get("start-level");
- if (sl != null) {
- startLevel = Integer.parseInt(sl);
+ // special handling for :boot or :launchpad
+ if ( sl != null && sl.startsWith(":") ) {
+ if ( bundleRunModes != null ) {
+ LOGGER.error("Unable to convert feature {}. Run modes must not be defined for bundles with start-level {}", f.getName(), sl);
+ System.exit(1);
+ }
+
+ Feature addFeat = additionalFeatures.get(sl);
+ if ( addFeat == null ) {
+ addFeat = new Feature(sl);
+ additionalFeatures.put(sl, addFeat);
+ }
+ addFeat.getOrCreateRunMode(null).getOrCreateArtifactGroup(0).add(newBundle);
} else {
- startLevel = 20;
- }
+ if (sl != null) {
+ startLevel = Integer.parseInt(sl);
+ } else {
+ startLevel = 20;
+ }
- String[] bundleRunModes = runModes;
- if (bundleRunModes == null) {
- bundleRunModes = getRunModes(bundle);
+ f.getOrCreateRunMode(bundleRunModes).getOrCreateArtifactGroup(startLevel).add(newBundle);
}
- f.getOrCreateRunMode(bundleRunModes).getOrCreateArtifactGroup(startLevel).add(newBundle);
}
// configurations
@@ -316,6 +334,9 @@ public class FeatureToProvisioning {
final File file = new File(out);
final Model m = new Model();
m.getFeatures().add(f);
+ for(final Feature addFeat : additionalFeatures.values()) {
+ m.getFeatures().add(addFeat);
+ }
try ( final FileWriter writer = new FileWriter(file)) {
ModelWriter.write(writer, m);
} catch ( final IOException ioe) {