Thomas Watson created ARIES-1227: ------------------------------------ Summary: Allow PerserService to parse successfully when namespace handlers are missing Key: ARIES-1227 URL: https://issues.apache.org/jira/browse/ARIES-1227 Project: Aries Issue Type: Improvement Components: Blueprint Reporter: Thomas Watson Assignee: Thomas Watson
The blueprint ParserService exposes the blueprint parser to other bundles. This is great because it allows other bundles to model and reason about blueprint dependencies. But the ParserService currently fails with a ComponentDefinitionException if a custom NamespaceHandler is used within the component XML file being parsed and that custom NamespaceHandler service is not currently registered. This becomes painful in scenarios where we are trying to reason about the dependencies of a group of bundles and one of these bundles provides a NamespaceHandler service which will be used at runtime by other bundles in the group. For example, an OSGi Subsystem may be installed with such a group of bundles as its content. The subsystems implementation in Aries attempts to model the blueprint dependencies of the bundle resources before actually installing and starting the bundles. This is done by using the blueprint ParserService. But it always fails to do so because any blueprint XML that uses the custom namespace will fail to model correctly which ultimately results in a subsystem installation failure. It would be nice if the ParserService could be configured to ignore the missing NamespaceHandlers and continue with modelling the basic blueprint XML. One way to accomplish this would be to have a framework property that can be configured to ignore when a namespace is missing while using the ParserService. This will only change the behavior of the ParserService and not the internal usage of the Parser implementation by blueprint-core. It should also not change the current behavior of the ParserService unless the option to ignore is enabled explicitly. Another option is to change the ParserService API somehow to pass in an option to ignore unknown NamespaceHandlers. This has an unfortunate side-effect of exploding the API of the ParserService and the many other layers built on top of it (e.g. ParserProxy and ModelledResourceManager which get used by Aries subsystesms). Perhaps that is the correct thing to do, but I am not comfortable changing that much API for this usecase. A global switch that simply enables the option to ignore missing NamespaceHandlers is good enough for my usage. If others want to add API to allow clients of the API to make that choice that is fine with me, but I would prefer that to be done by someone more familiar with the overall API here. -- This message was sent by Atlassian JIRA (v6.2#6252)