This is an automated email from the ASF dual-hosted git repository.
jcabrerizo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-ui.git
The following commit(s) were added to refs/heads/master by this push:
new 1a6a88d attempt to fix WARN and ERROR on service creation, and tidy
some references and logs
new 01295c1 Merge pull request #277 from
ahgittin/fix-warnings-about-ui-modules-java-bundles
1a6a88d is described below
commit 1a6a88d1c22585522d04fe56ca94d7d4ed559f73
Author: Alex Heneveld <[email protected]>
AuthorDate: Wed Sep 1 13:09:24 2021 +0100
attempt to fix WARN and ERROR on service creation, and tidy some references
and logs
metadata service appeared to have an inconsistent naming strategy; when i
updated the name it worked perfectly.
---
modularity-server/external-modules/pom.xml | 3 +--
.../brooklyn/ui/modularity/ExternalUiModule.java | 12 ++++++---
modularity-server/metadata-registry/pom.xml | 5 ++--
.../registry/impl/UiMetadataConfigListener.java | 31 +++++++++++++++++-----
.../registry/impl/UiMetadataRegistryImpl.java | 1 -
.../ui/modularity/module/api/UiModuleListener.java | 1 +
.../module/registry/UiModuleRegistryImpl.java | 4 +++
7 files changed, 41 insertions(+), 16 deletions(-)
diff --git a/modularity-server/external-modules/pom.xml
b/modularity-server/external-modules/pom.xml
index fc23600..fa83702 100644
--- a/modularity-server/external-modules/pom.xml
+++ b/modularity-server/external-modules/pom.xml
@@ -103,9 +103,8 @@
<instructions>
<!-- exportScr and below from
https://felix.apache.org/documentation/faqs/apache-felix-bundle-plugin-faq.html
-->
- <!-- Enable processing of OSGI DS component annotations -->
+ <!-- Enable processing of OSGI DS component and metatype annotations -
only needed for some type of tests it seems but no harm in having it -->
<_dsannotations>*</_dsannotations>
- <!-- Enable processing of OSGI metatype annotations -->
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
diff --git
a/modularity-server/external-modules/src/main/java/org/apache/brooklyn/ui/modularity/ExternalUiModule.java
b/modularity-server/external-modules/src/main/java/org/apache/brooklyn/ui/modularity/ExternalUiModule.java
index 7866efe..160ad08 100644
---
a/modularity-server/external-modules/src/main/java/org/apache/brooklyn/ui/modularity/ExternalUiModule.java
+++
b/modularity-server/external-modules/src/main/java/org/apache/brooklyn/ui/modularity/ExternalUiModule.java
@@ -41,7 +41,7 @@ import com.google.common.collect.ImmutableList;
@Component(
name = ExternalUiModule.PID,
configurationPid = ExternalUiModule.PID,
- configurationPolicy = ConfigurationPolicy.REQUIRE,
+ configurationPolicy = ConfigurationPolicy.REQUIRE, // only trigger if
there is a corresponding PID config admin, setting up an external ui module?
immediate = true
)
public class ExternalUiModule implements UiModule {
@@ -71,7 +71,12 @@ public class ExternalUiModule implements UiModule {
@Activate
public void activate(final Map<String, String> properties) {
- this.setModuleProperties(properties);
+ if (!properties.containsKey(KEY_URL) &&
properties.containsKey("component.id")) {
+ // activation properties aren't usually for a module; do this
check to suppress warning
+ LOG.debug("Not setting module properties for activation properties
"+properties);
+ } else {
+ this.setModuleProperties(properties);
+ }
}
@Modified
@@ -90,7 +95,8 @@ public class ExternalUiModule implements UiModule {
}
if (issues.size() > 0) {
- throw new IllegalArgumentException("Invalid UI module [" +
properties.get(KEY_ID) + "] ... " + issues.toString());
+ LOG.error("Invalid UI module (ignoring) [" +
properties.get(KEY_ID) + "] ... " + issues.toString()+"; properties:
"+properties, new Throwable("source of error"));
+ return;
}
this.id = properties.get(KEY_ID);
diff --git a/modularity-server/metadata-registry/pom.xml
b/modularity-server/metadata-registry/pom.xml
index ce62d4a..2c15bb7 100644
--- a/modularity-server/metadata-registry/pom.xml
+++ b/modularity-server/metadata-registry/pom.xml
@@ -114,10 +114,9 @@
<exportScr>true</exportScr>
<instructions>
- <!-- exportScr and below from
https://felix.apache.org/documentation/faqs/apache-felix-bundle-plugin-faq.html
-->
- <!-- Enable processing of OSGI DS component annotations -->
+ <!-- exportScr above and below from
https://felix.apache.org/documentation/faqs/apache-felix-bundle-plugin-faq.html
-->
+ <!-- Enable processing of OSGI DS component and metatype annotations -
only needed for some type of tests it seems but no harm in having it -->
<_dsannotations>*</_dsannotations>
- <!-- Enable processing of OSGI metatype annotations -->
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
diff --git
a/modularity-server/metadata-registry/src/main/java/org/apache/brooklyn/ui/modularity/metadata/registry/impl/UiMetadataConfigListener.java
b/modularity-server/metadata-registry/src/main/java/org/apache/brooklyn/ui/modularity/metadata/registry/impl/UiMetadataConfigListener.java
index 564f6c7..ef15c21 100644
---
a/modularity-server/metadata-registry/src/main/java/org/apache/brooklyn/ui/modularity/metadata/registry/impl/UiMetadataConfigListener.java
+++
b/modularity-server/metadata-registry/src/main/java/org/apache/brooklyn/ui/modularity/metadata/registry/impl/UiMetadataConfigListener.java
@@ -33,11 +33,11 @@ import static com.google.common.base.Predicates.not;
@Component(
name = "Brooklyn UI Metadata",
- configurationPid = UiMetadataConfigListener.PID, configurationPolicy =
ConfigurationPolicy.REQUIRE, immediate = true,
+ configurationPid = UiMetadataConfigListener.PID, configurationPolicy =
ConfigurationPolicy.OPTIONAL, immediate = true,
property = {UiMetadataRegistry.METADATA_TYPE + ":String=" +
UiMetadataRegistry.METADATA_TYPE_DEFAULT}
)
public class UiMetadataConfigListener {
- static final String PID = "org.apache.brooklyn.ui.metadata";
+ static final String PID = "org.apache.brooklyn.ui.modularity.metadata";
private static final Logger logger =
LoggerFactory.getLogger(UiMetadataConfigListener.class);
private static final List<String> EXCLUDE = Arrays.asList(
"felix.fileinstall.filename", "service.factoryPid",
"component.name", "component.id"
@@ -46,28 +46,45 @@ public class UiMetadataConfigListener {
@Reference
private UiMetadataRegistry metadataRegistry;
+ protected String getId(final Map<String, String> properties) {
+ return properties.containsKey(UiMetadataRegistry.METADATA_ID) ?
+ properties.get(UiMetadataRegistry.METADATA_ID) :
properties.get("service.pid");
+ }
+
@Activate
public void activate(final Map<String, String> properties) {
- modified(properties);
+ if (getId(properties)==null) {
+ logger.debug("Skipping recording of metadata config for irrelevant
activation record: "+properties);
+ } else {
+ modified(properties);
+ }
}
@Modified
public void modified(final Map<String, String> properties) {
+ String id = getId(properties);
+ if (id==null) {
+ logger.warn("Skipping update of UI metadata because ID is not
specified: "+properties);
+ return;
+ }
metadataRegistry.modifyMetadata(
properties.containsKey(UiMetadataRegistry.METADATA_TYPE) ?
properties.get(UiMetadataRegistry.METADATA_TYPE) :
UiMetadataRegistry.METADATA_TYPE_DEFAULT,
- properties.containsKey(UiMetadataRegistry.METADATA_ID) ?
- properties.get(UiMetadataRegistry.METADATA_ID) :
properties.get("service.pid"),
+ id,
Maps.filterKeys(properties, not(in(EXCLUDE)))
);
}
@Deactivate
public void deactivate(final Map<String, String> properties) {
+ String id = getId(properties);
+ if (id==null) {
+ logger.debug("Skipping deactivation of UI metadata because ID is
not specified: "+properties);
+ return;
+ }
metadataRegistry.unregisterMetadata(
properties.containsKey(UiMetadataRegistry.METADATA_TYPE) ?
properties.get(UiMetadataRegistry.METADATA_TYPE) :
UiMetadataRegistry.METADATA_TYPE_DEFAULT,
- properties.containsKey(UiMetadataRegistry.METADATA_ID) ?
- properties.get(UiMetadataRegistry.METADATA_ID) :
properties.get("service.pid"));
+ id);
}
}
diff --git
a/modularity-server/metadata-registry/src/main/java/org/apache/brooklyn/ui/modularity/metadata/registry/impl/UiMetadataRegistryImpl.java
b/modularity-server/metadata-registry/src/main/java/org/apache/brooklyn/ui/modularity/metadata/registry/impl/UiMetadataRegistryImpl.java
index 5aac821..a18fbee 100644
---
a/modularity-server/metadata-registry/src/main/java/org/apache/brooklyn/ui/modularity/metadata/registry/impl/UiMetadataRegistryImpl.java
+++
b/modularity-server/metadata-registry/src/main/java/org/apache/brooklyn/ui/modularity/metadata/registry/impl/UiMetadataRegistryImpl.java
@@ -53,7 +53,6 @@ public class UiMetadataRegistryImpl implements
UiMetadataRegistry {
@Override
public Map<String, Map<String, String>> getByType(final String type) {
- logger.error(type);
return metadataTable.row(type);
}
diff --git
a/modularity-server/module-api/src/main/java/org/apache/brooklyn/ui/modularity/module/api/UiModuleListener.java
b/modularity-server/module-api/src/main/java/org/apache/brooklyn/ui/modularity/module/api/UiModuleListener.java
index 8125e44..690998b 100644
---
a/modularity-server/module-api/src/main/java/org/apache/brooklyn/ui/modularity/module/api/UiModuleListener.java
+++
b/modularity-server/module-api/src/main/java/org/apache/brooklyn/ui/modularity/module/api/UiModuleListener.java
@@ -259,6 +259,7 @@ public class UiModuleListener implements
ServletContextListener {
}
@SuppressWarnings("unchecked")
Map<String, ?> config = (Map<String, ?>) new Yaml().load(is);
+ LOG.debug("Creating Brooklyn UI module definition for "+path+";
"+config+" / "+is);
return UiModuleImpl.createFromMap(config).path(path);
}
}
diff --git
a/modularity-server/module-registry/src/main/java/org/apache/brooklyn/ui/modularity/module/registry/UiModuleRegistryImpl.java
b/modularity-server/module-registry/src/main/java/org/apache/brooklyn/ui/modularity/module/registry/UiModuleRegistryImpl.java
index ccd369e..a34d32a 100644
---
a/modularity-server/module-registry/src/main/java/org/apache/brooklyn/ui/modularity/module/registry/UiModuleRegistryImpl.java
+++
b/modularity-server/module-registry/src/main/java/org/apache/brooklyn/ui/modularity/module/registry/UiModuleRegistryImpl.java
@@ -37,6 +37,10 @@ public class UiModuleRegistryImpl implements
UiModuleRegistry {
private final ConcurrentHashMap<String, UiModule> registry = new
ConcurrentHashMap<>();
public void register(final UiModule uiModule) {
+ if (uiModule.getId()==null) {
+ LOG.error("Skipping invalid Brooklyn UI module "+uiModule, new
Throwable("source of error"));
+ return;
+ }
LOG.info("Registering new Brooklyn web component [{}] [{}]",
uiModule.getId(), uiModule.getName());
registry.put(uiModule.getId(), uiModule);
}