Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-4207

Test case CxfEndpointBeanBusSettingTest should use ExtensionManagerBus instead of CXFBusImpl

    XMLWordPrintableJSON

Details

    • Test
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.7.2
    • 2.8.0
    • camel-cxf
    • None
    • Patch Available

    Description

      I noticed a minor deficiency in one of the CXF spring configuration tests in the current Camel trunk.
      In org.apache.camel.component.cxf.spring.CxfEndpointBeanBusSettingTest, the two CXF bus instances are configured and referenced from the two Camel CXF endpoints.

      This test runs without errors. But if you try to use this example in a real scenario where these CXF endpoints are actually referenced in the Camel route, you will get an NPE at the following code line.

      protected BindingInfo createBindingInfo() {
      BindingFactoryManager mgr = bus.getExtension(BindingFactoryManager.class);
      ...
      bindingFactory = mgr.getBindingFactory(binding); //<--- this line

      Caused by: java.lang.NullPointerException
      at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createBindingInfo(AbstractWSDLBasedEndpointFactory.java:338)
      at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpointInfo(AbstractWSDLBasedEndpointFactory.java:252)
      at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:147)
      at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:157)
      at org.apache.camel.component.cxf.CxfConsumer.<init>(CxfConsumer.java:226)
      at org.apache.camel.component.cxf.CxfEndpoint.createConsumer(CxfEndpoint.java:162)
      at org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:61)
      at org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:75)
      at org.apache.camel.impl.RouteService.warmUp(RouteService.java:124)
      at org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:1843)
      at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1771)
      at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1556)
      at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1448)
      at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1338)
      at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:160)
      at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
      at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
      at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1316)
      at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:204)
      at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:99)
      ... 31 more

      This null BindingFactoryManager instance is the result from the configuration that uses CXFBusImpl directly, as

      <bean id="cxf1" class="org.apache.cxf.bus.CXFBusImpl"/>
      <bean id="cxf2" class="org.apache.cxf.bus.CXFBusImpl"/>

      In CXF 2.4, the standard extensions are inserted into the bus at org.apache.cxf.bus.extension.ExtensionManagerBus's constructor.

      Therefore, in order to get the BindingFactoryManager inserted into the bus to avoid this NPE, the ExtensionManagerBus class should be used instead of CXFBusImpl as the class parameter. Alternatively, as this is a spring configuration, we could use org.apache.cxf.bus.spring.SpringBus. But I think ExtensionManagerBus is more neutral and therefore probably more suitable as an example to the users.

      <bean id="cxf1" class="org.apache.cxf.bus.extension.ExtensionManagerBus"/>
      <bean id="cxf2" class="org.apache.cxf.bus.extension.ExtensionManagerBus"/>

      I am attaching a patch file suggesting this change and also another minor change in the test program to add a few more assertion checks.

      Regards, aki

      Attachments

        1. patch.txt
          5 kB
          Akitoshi Yoshida

        Activity

          People

            njiang Willem Jiang
            ay Akitoshi Yoshida
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: