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);
}
}
}