You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2019/12/13 16:53:28 UTC

[sling-whiteboard] branch master updated: Add Bundles to Features

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2fe8c76  Add Bundles to Features
2fe8c76 is described below

commit 2fe8c7691d6a970e3799fabf62a55b7dc82cffde
Author: David Bosschaert <da...@gmail.com>
AuthorDate: Fri Dec 13 16:45:16 2019 +0000

    Add Bundles to Features
---
 .../org/osgi/feature/{Feature.java => Bundle.java} |  34 +++---
 .../src/main/java/org/osgi/feature/Feature.java    | 123 ++++++++++++++++++++-
 2 files changed, 139 insertions(+), 18 deletions(-)

diff --git a/osgi-featuremodel/src/main/java/org/osgi/feature/Feature.java b/osgi-featuremodel/src/main/java/org/osgi/feature/Bundle.java
similarity index 67%
copy from osgi-featuremodel/src/main/java/org/osgi/feature/Feature.java
copy to osgi-featuremodel/src/main/java/org/osgi/feature/Bundle.java
index 1ed334e..b045466 100644
--- a/osgi-featuremodel/src/main/java/org/osgi/feature/Feature.java
+++ b/osgi-featuremodel/src/main/java/org/osgi/feature/Bundle.java
@@ -18,17 +18,22 @@ package org.osgi.feature;
 
 import org.osgi.framework.Version;
 
-public class Feature {
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Bundle {
     private final String groupId;
     private final String artifactId;
     private final Version version;
-    private final String description;
+    private final Map<String, String> metadata;
+
+    private Bundle(String groupId, String artifactId, Version version, Map<String,String> metadata) {
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.version = version;
 
-    private Feature(String gid, String aid, Version ver, String desc) {
-        groupId = gid;
-        artifactId = aid;
-        version = ver;
-        description = desc;
+        this.metadata = Collections.unmodifiableMap(metadata);
     }
 
     public String getGroupId() {
@@ -43,8 +48,8 @@ public class Feature {
         return version;
     }
 
-    public String getDescription() {
-        return description;
+    public Map<String, String> getMetadata() {
+        return metadata;
     }
 
     public class Builder {
@@ -52,7 +57,7 @@ public class Feature {
         private final String artifactId;
         private final Version version;
 
-        private String description;
+        private final Map<String,String> metadata = new HashMap<>();
 
         public Builder(String groupId, String artifactId, Version version) {
             this.groupId = groupId;
@@ -60,14 +65,13 @@ public class Feature {
             this.version = version;
         }
 
-        public Builder setDescription(String description) {
-            this.description = description;
+        public Builder addMetadata(Map<String,String> md) {
+            this.metadata.putAll(md);
             return this;
         }
 
-        public Feature build() {
-            return new Feature(groupId, artifactId, version,
-                    description);
+        public Bundle build() {
+            return new Bundle(groupId, artifactId, version, metadata);
         }
     }
 }
diff --git a/osgi-featuremodel/src/main/java/org/osgi/feature/Feature.java b/osgi-featuremodel/src/main/java/org/osgi/feature/Feature.java
index 1ed334e..2455b2b 100644
--- a/osgi-featuremodel/src/main/java/org/osgi/feature/Feature.java
+++ b/osgi-featuremodel/src/main/java/org/osgi/feature/Feature.java
@@ -18,17 +18,51 @@ package org.osgi.feature;
 
 import org.osgi.framework.Version;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// Thread Safe
 public class Feature {
     private final String groupId;
     private final String artifactId;
     private final Version version;
+    private final String title;
     private final String description;
+    private final String vendor;
+    private final String license;
+    private final String location;
+    private final boolean complete;
+    private final boolean isFinal;
+
+    private final List<Bundle> bundles;
+    private final Map<String, String> variables;
 
-    private Feature(String gid, String aid, Version ver, String desc) {
+    private Feature(String gid, String aid, Version ver, String aTitle, String desc, String vnd, String lic, String loc,
+            boolean comp, boolean fin, List<Bundle> bs, Map<String,String> vars) {
         groupId = gid;
         artifactId = aid;
         version = ver;
+        title = aTitle;
         description = desc;
+        vendor = vnd;
+        license = lic;
+        location = loc;
+        complete = comp;
+        isFinal = fin;
+
+        bundles = Collections.unmodifiableList(bs);
+        variables = Collections.unmodifiableMap(vars);
+
+        // add prototype
+        // add requirements
+        // add capabilities
+        // add bundles
+        // add configurations
+        // add framework properties
     }
 
     public String getGroupId() {
@@ -43,16 +77,58 @@ public class Feature {
         return version;
     }
 
+    public String getTitle() {
+        return title;
+    }
+
     public String getDescription() {
         return description;
     }
 
+    public String getVendor() {
+        return vendor;
+    }
+
+    public String getLicense() {
+        return license;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public boolean isComplete() {
+        return complete;
+    }
+
+    public boolean isFinal() {
+        return isFinal;
+    }
+
+    public List<Bundle> getBundles() {
+        return bundles;
+    }
+
+    public Map<String, String> getVariables() {
+        return variables;
+    }
+
+    // Not Thread Safe
     public class Builder {
         private final String groupId;
         private final String artifactId;
         private final Version version;
 
+        private String title;
         private String description;
+        private String vendor;
+        private String license;
+        private String location;
+        private boolean complete;
+        private boolean isFinal;
+
+        private final List<Bundle> bundles = new ArrayList<>();
+        private final Map<String,String> variables = new HashMap<>();
 
         public Builder(String groupId, String artifactId, Version version) {
             this.groupId = groupId;
@@ -60,14 +136,55 @@ public class Feature {
             this.version = version;
         }
 
+        public Builder setTitle(String title) {
+            this.title = title;
+            return this;
+        }
+
+        public Builder setVendor(String vendor) {
+            this.vendor = vendor;
+            return this;
+        }
+
+        public Builder setLicense(String license) {
+            this.license = license;
+            return this;
+        }
+
+        public Builder setLocation(String location) {
+            this.location = location;
+            return this;
+        }
+
+        public Builder setComplete(boolean complete) {
+            this.complete = complete;
+            return this;
+        }
+
+        public Builder setFinal(boolean isFinal) {
+            this.isFinal = isFinal;
+            return this;
+        }
+
         public Builder setDescription(String description) {
             this.description = description;
             return this;
         }
 
+        public Builder addBundles(Bundle ... bundles) {
+            this.bundles.addAll(Arrays.asList(bundles));
+            return this;
+        }
+
+        public Builder addVariables(Map<String, String> variables) {
+            this.variables.putAll(variables);
+            return this;
+        }
+
         public Feature build() {
-            return new Feature(groupId, artifactId, version,
-                    description);
+            return new Feature(groupId, artifactId, version, title,
+                    description, vendor, license, location, complete, isFinal,
+                    bundles, variables);
         }
     }
 }