Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-6567

Allow alternate wildcard in Camel CXF Transport for Blueprint

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 3.0.5
    • None
    • Core
    • None
    • ServiceMix 5.4.1

    • Unknown
    • Patch

    Description

      We are trying to use Camel CXF Transport within Blueprint.
      We followed the intructions on this page :
      http://camel.apache.org/camel-transport-for-cxf.html

      However, when defining a camel destination with an ID containing an asterisk and dot :
      <camel:destination id="*.camel-destination" camelContextId="camel1" />
      Blueprint XSD validation fails with the exception below [1].

      In Spring, the attribute "name" is defined as a "xs:string", whereas in Blueprint, the attribute "id" is defined as "NCName" (non-colonized name), which disallows "asterisk".

      Here is a patch to support an alternate wildcard which uses only characters allowed ("_WILDCARD_") to replace the asterisk ("*").

      <camel:destination id="_WILDCARD_.camel-destination" camelContextId="camel1" />

      [EDIT] : another solution would be to add explicitly the attribute "name" (defined as xs:string) in the following XSD, to mimic Spring behaviour :
      camel-cxf-transport/src/main/resources/schema/blueprint/camel.xsd

      2015-08-11 17:10:16,014 [int Extender: 1] ERROR BlueprintContainerImpl         - Unable to start blueprint container for bundle CxfTransportBlueprintTest 
      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:313) 
              at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:261) 
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
              at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
              at org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106) 
              at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48) 
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
              at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) 
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) 
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
              at java.lang.Thread.run(Thread.java:744) 
      Caused by: org.xml.sax.SAXParseException; cvc-datatype-valid.1.2.1: '*.camel-destination' is not a valid value for 'NCName'. 
              at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) 
              at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) 
              at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) 
              at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) 
              at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) 
              at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:458) 
              at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3237) 
              at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processOneAttribute(XMLSchemaValidator.java:2832) 
              at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processAttributes(XMLSchemaValidator.java:2769) 
              at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2056) 
              at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:746) 
              at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.beginNode(DOMValidatorHelper.java:277) 
              at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.validate(DOMValidatorHelper.java:244) 
              at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.validate(DOMValidatorHelper.java:190) 
              at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:109) 
              at javax.xml.validation.Validator.validate(Validator.java:124) 
              at org.apache.aries.blueprint.parser.Parser.validate(Parser.java:285) 
              ... 13 more 
      

      http://camel.465427.n5.nabble.com/Camel-CXF-Transport-works-within-Blueprint-only-when-XSD-validation-is-disabled-td5770593.html#a5771007

      Attachments

        Activity

          People

            ay Akitoshi Yoshida
            metatech metatech
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated: