Grzegorz Grzybek created ARIES-1350: ---------------------------------------
Summary: Namespace handler can't be found even if it's registered correctly Key: ARIES-1350 URL: https://issues.apache.org/jira/browse/ARIES-1350 Project: Aries Issue Type: Bug Components: Blueprint Reporter: Grzegorz Grzybek Priority: Critical {{org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl.NamespaceHandlerSetImpl}} class deals with namespace handlers for single BP container. During creation, it takes all already registered handlers from global NS registry. After creation it is added to {{sets}} field in the registry to get notified about newly registered NS handlers. But when NS handler is registered between the above two steps, BP stays in GRACE_PERIOD state infinitely, because this "case" in BP container impl: {code:java} case WaitForNamespaceHandlers: { List<String> missing = new ArrayList<String>(); List<URI> missingURIs = new ArrayList<URI>(); for (URI ns : namespaces) { if (handlerSet.getNamespaceHandler(ns) == null) { {code} won't ever get namespace handler, because it looks in the handler set obtained when {{NamespaceHandlerRegistryImpl.NamespaceHandlerSetImpl}} was constructed. This: {noformat} 10:51 $ git diff diff --git a/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java b/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java index 7688924..d53ea5c 100644 --- a/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java +++ b/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java @@ -535,6 +535,9 @@ public class NamespaceHandlerRegistryImpl implements NamespaceHandlerRegistry, S } public NamespaceHandler getNamespaceHandler(URI namespace) { + if (!handlers.containsKey(namespace)) { + findCompatibleNamespaceHandler(namespace); + } return handlers.get(namespace); } {noformat} fixes the problem -- This message was sent by Atlassian JIRA (v6.3.4#6332)