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

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit 300f88f5d0415de447f1e850173f00d23c8e56b1
Author: Alex Heneveld <[email protected]>
AuthorDate: Mon Dec 6 12:36:16 2021 +0000

    allow BOM used to make a ZIP to give extra OSGi headers
---
 .../brooklyn/core/catalog/internal/BasicBrooklynCatalog.java     | 6 +++++-
 .../core/typereg/BrooklynBomYamlCatalogBundleResolver.java       | 9 +++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
index cf21aaf..4cde1de 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
@@ -116,9 +116,13 @@ public class BasicBrooklynCatalog implements 
BrooklynCatalog {
 
     /** Header on bundle indicating it is a wrapped BOM with no other 
resources */
     public static final String BROOKLYN_WRAPPED_BOM_BUNDLE = 
"Brooklyn-Wrapped-BOM";
+
     @VisibleForTesting
     public static final boolean AUTO_WRAP_CATALOG_YAML_AS_BUNDLE = true;
-    
+
+    /** key within brooklyn.catalog containing a map of items used to generate 
headers if an OSGi bundle is being produced by wrapping the YAML */
+    public static final String CATALOG_OSGI_WRAP_HEADERS = 
"catalog.osgi.wrap.headers";
+
     private static final Logger log = 
LoggerFactory.getLogger(BasicBrooklynCatalog.class);
 
     public static class BrooklynLoaderTracker {
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/typereg/BrooklynBomYamlCatalogBundleResolver.java
 
b/core/src/main/java/org/apache/brooklyn/core/typereg/BrooklynBomYamlCatalogBundleResolver.java
index 110533c..642ce03 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/typereg/BrooklynBomYamlCatalogBundleResolver.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/typereg/BrooklynBomYamlCatalogBundleResolver.java
@@ -107,6 +107,15 @@ public class BrooklynBomYamlCatalogBundleResolver extends 
AbstractCatalogBundleR
         
mf.getMainAttributes().putValue(Attributes.Name.MANIFEST_VERSION.toString(), 
BasicBrooklynCatalog.OSGI_MANIFEST_VERSION_VALUE);
         
mf.getMainAttributes().putValue(BasicBrooklynCatalog.BROOKLYN_WRAPPED_BOM_BUNDLE,
 Boolean.TRUE.toString());
 
+        Object impliedHeaders = 
cm.get(BasicBrooklynCatalog.CATALOG_OSGI_WRAP_HEADERS);
+        if (impliedHeaders instanceof Map) {
+            ((Map<?, ?>) impliedHeaders).forEach((k,v)->{
+                mf.getMainAttributes().putValue(Strings.toString(k), 
Strings.toString(v));
+            });
+        } else if (impliedHeaders!=null) {
+            throw new IllegalStateException("Must contain map of OSGi headers 
to insert in "+BasicBrooklynCatalog.CATALOG_OSGI_WRAP_HEADERS);
+        }
+
         BundleMaker bm = new BundleMaker(mgmt);
         File bf = bm.createTempBundle(vn.getSymbolicName(), mf, MutableMap.of(
                 new ZipEntry(BasicBrooklynCatalog.CATALOG_BOM), (InputStream) 
new ByteArrayInputStream(yaml.getBytes())));

Reply via email to