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 2020/01/06 14:49:16 UTC

[sling-whiteboard] branch master updated: Use the new builders in FeatureServiceImpl

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 746a4cf  Use the new builders in FeatureServiceImpl
746a4cf is described below

commit 746a4cf5ccaf8884f09c729b06061cd1be8c255a
Author: David Bosschaert <da...@gmail.com>
AuthorDate: Mon Jan 6 14:48:48 2020 +0000

    Use the new builders in FeatureServiceImpl
---
 .../main/java/org/osgi/feature/BuilderFactory.java |  4 ++++
 .../org/osgi/feature/impl/BuilderFactoryImpl.java  | 11 ++++++++++
 .../org/osgi/feature/impl/FeatureServiceImpl.java  | 25 +++++++++++++---------
 3 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/osgi-featuremodel/src/main/java/org/osgi/feature/BuilderFactory.java b/osgi-featuremodel/src/main/java/org/osgi/feature/BuilderFactory.java
index 1f80a77..cbbe9a2 100644
--- a/osgi-featuremodel/src/main/java/org/osgi/feature/BuilderFactory.java
+++ b/osgi-featuremodel/src/main/java/org/osgi/feature/BuilderFactory.java
@@ -19,6 +19,10 @@ package org.osgi.feature;
 public interface BuilderFactory {
     BundleBuilder newBundleBuilder(ArtifactID id);
 
+    ConfigurationBuilder newConfigurationBuilder(String pid);
+
+    ConfigurationBuilder newConfigurationBuilder(String factoryPid, String name);
+
     FeatureBuilder newFeatureBuilder(ArtifactID id);
 
     ExtensionBuilder newExtensionBuilder(String name, Extension.Type type, Extension.Kind kind);
diff --git a/osgi-featuremodel/src/main/java/org/osgi/feature/impl/BuilderFactoryImpl.java b/osgi-featuremodel/src/main/java/org/osgi/feature/impl/BuilderFactoryImpl.java
index 6c1b3bb..52f39f7 100644
--- a/osgi-featuremodel/src/main/java/org/osgi/feature/impl/BuilderFactoryImpl.java
+++ b/osgi-featuremodel/src/main/java/org/osgi/feature/impl/BuilderFactoryImpl.java
@@ -19,6 +19,7 @@ package org.osgi.feature.impl;
 import org.osgi.feature.ArtifactID;
 import org.osgi.feature.BuilderFactory;
 import org.osgi.feature.BundleBuilder;
+import org.osgi.feature.ConfigurationBuilder;
 import org.osgi.feature.Extension.Kind;
 import org.osgi.feature.Extension.Type;
 import org.osgi.feature.ExtensionBuilder;
@@ -32,6 +33,16 @@ class BuilderFactoryImpl implements BuilderFactory {
     }
 
     @Override
+    public ConfigurationBuilder newConfigurationBuilder(String pid) {
+        return new ConfigurationBuilderImpl(pid);
+    }
+
+    @Override
+    public ConfigurationBuilder newConfigurationBuilder(String factoryPid, String name) {
+        return new ConfigurationBuilderImpl(factoryPid, name);
+    }
+
+    @Override
     public FeatureBuilder newFeatureBuilder(ArtifactID id) {
         return new FeatureBuilderImpl(id);
     }
diff --git a/osgi-featuremodel/src/main/java/org/osgi/feature/impl/FeatureServiceImpl.java b/osgi-featuremodel/src/main/java/org/osgi/feature/impl/FeatureServiceImpl.java
index a935cc4..c0e224f 100644
--- a/osgi-featuremodel/src/main/java/org/osgi/feature/impl/FeatureServiceImpl.java
+++ b/osgi-featuremodel/src/main/java/org/osgi/feature/impl/FeatureServiceImpl.java
@@ -19,9 +19,13 @@ package org.osgi.feature.impl;
 import org.osgi.feature.ArtifactID;
 import org.osgi.feature.BuilderFactory;
 import org.osgi.feature.Bundle;
+import org.osgi.feature.BundleBuilder;
 import org.osgi.feature.Configuration;
+import org.osgi.feature.ConfigurationBuilder;
 import org.osgi.feature.Extension;
+import org.osgi.feature.ExtensionBuilder;
 import org.osgi.feature.Feature;
+import org.osgi.feature.FeatureBuilder;
 import org.osgi.feature.FeatureService;
 import org.osgi.feature.MergeContext;
 
@@ -42,9 +46,11 @@ import javax.json.JsonString;
 import javax.json.JsonValue;
 
 public class FeatureServiceImpl implements FeatureService {
+    private final BuilderFactoryImpl builderFactory = new BuilderFactoryImpl();
+
     @Override
     public BuilderFactory getBuilderFactory() {
-        return new BuilderFactoryImpl();
+        return builderFactory;
     }
 
     @Override
@@ -52,7 +58,7 @@ public class FeatureServiceImpl implements FeatureService {
         JsonObject json = Json.createReader(jsonReader).readObject();
 
         String id = json.getString("id");
-        FeatureBuilderImpl builder = new FeatureBuilderImpl(ArtifactID.fromMavenID(id));
+        FeatureBuilder builder = builderFactory.newFeatureBuilder(ArtifactID.fromMavenID(id));
 
         builder.setTitle(json.getString("title", null));
         builder.setDescription(json.getString("description", null));
@@ -81,7 +87,7 @@ public class FeatureServiceImpl implements FeatureService {
             if (val.getValueType() == JsonValue.ValueType.OBJECT) {
                 JsonObject jo = val.asJsonObject();
                 String bid = jo.getString("id");
-                BundleBuilderImpl builder = new BundleBuilderImpl(ArtifactID.fromMavenID(bid));
+                BundleBuilder builder = builderFactory.newBundleBuilder(ArtifactID.fromMavenID(bid));
 
                 for (Map.Entry<String, JsonValue> entry : jo.entrySet()) {
                     if (entry.getKey().equals("id"))
@@ -126,11 +132,11 @@ public class FeatureServiceImpl implements FeatureService {
                 p = p.substring(idx + 1);
             }
 
-            ConfigurationBuilderImpl builder;
+            ConfigurationBuilder builder;
             if (factoryPid == null) {
-                builder = new ConfigurationBuilderImpl(p);
+                builder = builderFactory.newConfigurationBuilder(p);
             } else {
-                builder = new ConfigurationBuilderImpl(factoryPid, p);
+                builder = builderFactory.newConfigurationBuilder(factoryPid, p);
             }
 
             JsonObject values = entry.getValue().asJsonObject();
@@ -186,7 +192,7 @@ public class FeatureServiceImpl implements FeatureService {
             String k = exData.getString("kind", "optional");
             Extension.Kind kind = Extension.Kind.valueOf(k.toUpperCase());
 
-            ExtensionBuilderImpl builder = new ExtensionBuilderImpl(entry.getKey(), type, kind);
+            ExtensionBuilder builder = builderFactory.newExtensionBuilder(entry.getKey(), type, kind);
 
             switch (type) {
             case TEXT:
@@ -219,8 +225,7 @@ public class FeatureServiceImpl implements FeatureService {
 
     @Override
     public Feature mergeFeatures(ArtifactID targetID, Feature f1, Feature f2, MergeContext ctx) {
-
-        FeatureBuilderImpl fb = new FeatureBuilderImpl(targetID);
+        FeatureBuilder fb = builderFactory.newFeatureBuilder(targetID);
 
         copyAttrs(f1, fb);
         copyAttrs(f2, fb);
@@ -309,7 +314,7 @@ public class FeatureServiceImpl implements FeatureService {
         return extensions.values().toArray(new Extension[] {});
     }
 
-    private void copyAttrs(Feature f, FeatureBuilderImpl fb) {
+    private void copyAttrs(Feature f, FeatureBuilder fb) {
         if (f.getTitle() != null)
             fb.setTitle(f.getTitle());