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

Inconsistent Databinding relationship between ClientProxyBean/ServiceFactory

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.1.1, 2.1.2
    • 2.2.4
    • Simple Frontend
    • None

    Description

      When creating a ClientProxyFactoryBean through the use of the spring defintion <simple:client> the data-binding definition is not passed on to all appropriate associated objects in the correct order. (NOTE: All line numbers references are based on v2.1.2 of the source code. Notation is ClassName@line)

      The ClientProxyFactoryBean sets it's dataBinding onto the ClientFactoryBean @line 94. This associates the dataBinding with the ClientFactoryBean (attribute dataBinding on parent AbstractEndpointFactory).

      However a request is made to execute the create() method on ClientFactoryBean (ClientProxyFactoryBean@97), one of the first tasks is to execute applyExtraClass() (ClientFactoryBean@50). I believe this assists in defining an inheritance model for the class tree. This method retrieves the dataBinding from the serviceFactory (ClientFactoryBean@78) and then proceeds to apply the extra classes as per the property.

      However, at this time the ServiceFactory (attribute serviceFactory on parent AbstractWSDLBasedEndpointFactory) has not been initialized. This doesn't occur the method createEndPoint() is invoked (ClientFactoryBean@52). It isn't until the createEndPoint() method is invoke that a check is made against the ServiceFactory to determine it's state.

      Once it's identified that the service hasn't been initialized, initializeServiceFactory() (AbstractWSDLBasedEndpointFactory@78) is invoked, which then associates the original dataBinding defined at the ClientProxyFactoryBean definition with the ServiceFactory (AbstractWSDLBasedEndpointFactory@150).

      However, by this time, an invalid (ie: the default) dataBinding definition was used to define the additional classes for the inheritance model.

      What brought this to my attention was: i was trying to utilize the AegisDataBinding to map my class tree, however it wasn't being configured correctly.

      -B

      Attachments

        Activity

          People

            dkulp Daniel Kulp
            bstopp Bryan Stopp
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: