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 2017/06/07 09:44:32 UTC

svn commit: r1797903 - in /sling/whiteboard/cziegeler: feature-karaf/src/main/java/org/apache/sling/feature/karaf/KarafFeatureWriter.java feature/src/main/java/org/apache/sling/feature/Extension.java

Author: cziegeler
Date: Wed Jun  7 09:44:32 2017
New Revision: 1797903

URL: http://svn.apache.org/viewvc?rev=1797903&view=rev
Log:
Support repoinit in karaf features

Modified:
    sling/whiteboard/cziegeler/feature-karaf/src/main/java/org/apache/sling/feature/karaf/KarafFeatureWriter.java
    sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java

Modified: sling/whiteboard/cziegeler/feature-karaf/src/main/java/org/apache/sling/feature/karaf/KarafFeatureWriter.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-karaf/src/main/java/org/apache/sling/feature/karaf/KarafFeatureWriter.java?rev=1797903&r1=1797902&r2=1797903&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature-karaf/src/main/java/org/apache/sling/feature/karaf/KarafFeatureWriter.java (original)
+++ sling/whiteboard/cziegeler/feature-karaf/src/main/java/org/apache/sling/feature/karaf/KarafFeatureWriter.java Wed Jun  7 09:44:32 2017
@@ -25,6 +25,8 @@ import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.Writer;
 import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.zip.ZipEntry;
@@ -32,6 +34,8 @@ import java.util.zip.ZipOutputStream;
 
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Configuration;
+import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.support.ArtifactHandler;
 import org.apache.sling.feature.support.ArtifactManager;
@@ -48,16 +52,40 @@ public class KarafFeatureWriter {
             final Feature feature,
             final ArtifactManager artifactManager)
     throws IOException {
+        // check for repoinit extension
+        Extension repoinitExt = null;
+        for(final Extension e : feature.getExtensions()) {
+            if ( Extension.NAME_REPOINIT.equals(e.getName())) {
+                repoinitExt = e;
+                break;
+            }
+        }
         File configurationBundleFile = null;
         Artifact configuratorBundle = null;
         try {
-            if ( !feature.getConfigurations().isEmpty() ) {
+            final List<Configuration> configs = new ArrayList<>(feature.getConfigurations());
+            if ( repoinitExt != null ) {
+                final Configuration cfg = new Configuration("org.apache.sling.jcr.repoinit.RepositoryInitializer",
+                        "feature-" + feature.getId().getArtifactId());
+                cfg.getProperties().put("scripts", repoinitExt.getText());
+                configs.add(cfg);
+            }
+            if ( !configs.isEmpty() ) {
                 configurationBundleFile = Files.createTempFile(null, null).toFile();
 
                 try ( final FileOutputStream fos = new FileOutputStream(configurationBundleFile)) {
-                    ConfigurationUtil.createConfiguratorBundle(os, feature.getConfigurations(),
+                    final Map<String, String> map;
+                    if ( repoinitExt == null ) {
+                        map = null;
+                    } else {
+                        map = Collections.singletonMap("Require-Capability",
+                                ConfigurationUtil.REQUIRE_REPOINIT_CAPABILITY);
+                    }
+                    ConfigurationUtil.createConfiguratorBundle(os,
+                            configs,
                             feature.getId().getGroupId() + "." + feature.getId().getArtifactId(),
-                            feature.getId().getOSGiVersion().toString());
+                            feature.getId().getOSGiVersion().toString(),
+                            map);
                     configuratorBundle = new Artifact(new ArtifactId(feature.getId().getGroupId(),
                             feature.getId().getArtifactId(),
                             feature.getId().getVersion(), "configurator", null));

Modified: sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java?rev=1797903&r1=1797902&r2=1797903&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java (original)
+++ sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/Extension.java Wed Jun  7 09:44:32 2017
@@ -31,6 +31,15 @@ import java.util.List;
  */
 public class Extension {
 
+    /** Common extension name to specify the framework. */
+    public static final String NAME_FRAMEWORK = "framework";
+
+    /** Common extension name to specify the repoinit part for Apache Sling. */
+    public static final String NAME_REPOINIT = "repoinit";
+
+    /** Common extension name to specify the content packages for Apache Sling. */
+    public static final String NAME_CONTENT_PACKAGES = "content-packages";
+
     private final ExtensionType type;
 
     private final String name;