aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "metatech (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ARIES-1286) Support for inner beans defined as "xsd:any" in custom XMLs
Date Mon, 19 Jan 2015 08:26:34 GMT

    [ https://issues.apache.org/jira/browse/ARIES-1286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14282255#comment-14282255
] 

metatech commented on ARIES-1286:
---------------------------------

Here is some additional explanation about the test case : to avoid defining my own custom
namespace and writing the namespace handler code which handles it, I modified the existing
(non-custom) Blueprint "ext" namespace, which should not be normally modified, but which also
reproduces the same problem as with custom namespaces.


> Support for inner beans defined as "xsd:any" in custom XMLs
> -----------------------------------------------------------
>
>                 Key: ARIES-1286
>                 URL: https://issues.apache.org/jira/browse/ARIES-1286
>             Project: Aries
>          Issue Type: Bug
>          Components: Blueprint
>    Affects Versions: blueprint-core-1.0.1
>            Reporter: metatech
>         Attachments: blueprint-ext.xsd, config.xml
>
>
> When a custom XSD defines a "xs:any" bean (for instance "shutdownHooks" in ActiveMQ),
Blueprint XML validation rejects it because the XML Validator cannot find the XSD for the
Blueprint core namespace (http://www.osgi.org/xmlns/blueprint/v1.0.0).
> This is because the BlueprintContainer, which calls the XSD validation, extracts the
XSD's from the various NamespaceHandler's which are used in the XML.  But the Blueprint core
namespace is an exceptional case, because it does not have a NamespaceHandler registered in
the OSGi registry.  Its XSD is therefore missing from the "Schema" object.
> To reproduce the problem, here are the steps : 
> Download samples and extract it :
> http://apache.cu.be/aries/samples-1.0.0-source-release.zip
> Replace file samples-1.0.0\blueprint\helloworld\helloworld-client\src\main\resources\OSGI-INF\blueprint\config.xml
with attached, which adds an inner bean definition.
> In directory blueprint-samples-1.0.0-source-release\samples-1.0.0\blueprint\helloworld,
do a "mvn install"
> In directory blueprint-samples-1.0.0-source-release\samples-1.0.0\blueprint\helloworld\helloworld-assembly\target,
> open org.apache.aries.blueprint-1.0.0.jar with a ZIP editor.
> Browse to directory org/apache/aries/blueprint/ext/impl
> Replace blueprint-ext.xsd with the attached version, which adds a "xsd:any" element.
> Run the test with 
> java -jar osgi-3.5.0.v20090520.jar -console
> Type "ss" and check the ID for the bundles.
> Start the bundle "org.apache.aries.samples.blueprint.helloworld.client_1.0.0"
> {code}
> [Blueprint Extender: 1] ERROR org.apache.aries.blueprint.container.BlueprintContainerImpl
- Unable to start blueprint container for bundle org.apache.aries.samples.blueprint.helloworld.client
> org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to validate
xml
>         at org.apache.aries.blueprint.parser.Parser.validate(Parser.java:288)
>         at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:291)
>         at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:242)
>         at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
>         at java.util.concurrent.FutureTask.run(Unknown Source)
>         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown
Source)
>         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
Source)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>         at java.lang.Thread.run(Unknown Source)
> Caused by: org.xml.sax.SAXParseException; cvc-complex-type.2.4.c: The matching wildcard
is strict, but no declaration can be found for element 'bean'.
>         at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.beginNode(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.validate(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.validate(Unknown
Source)
>         at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(Unknown
Source)
>         at javax.xml.validation.Validator.validate(Unknown Source)
>         at org.apache.aries.blueprint.parser.Parser.validate(Parser.java:285)
>         ... 10 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message