CXF uses wsdl4j implementation classes
--------------------------------------
Key: CXF-3893
URL: https://issues.apache.org/jira/browse/CXF-3893
Project: CXF
Issue Type: Improvement
Components: CORBA Binding, Core
Affects Versions: 2.4.3
Environment: Built with JDK 1.6.
Reporter: Brian Wilson
WSDLFactory as provided by wsdl4j-1.6.2.jar allows for a different factory
implementation to be used. However, there are parts of the CXF codebase that
are hardcoded to use the default implementation (i.e. that which is provided by
wsdl4j). There are only a few places where this happens, and it seems that
there are more general ways to accomplish the same things. It also hinders
those who need to use a different implementation than is provided by wsdl4j.
I am including a patch which fixes these issues.
In rt/core:
* cxf/endpoint/ClientImpl.java: using SOAPBinding interface for casting
instead of SOAPBindingImpl. (getTransportURI is defined for both).
* cxf/wsdl11/ServiceWSDLBuilder.java: get Schema implementations by
ExtensionRegistry.createExtension mechanism, instead of calling new
SchemaImpl().
* cxf/wsdl11/WSDLManagerImpl.java: create entries for MimePart.class by
copying them from BindingInput.class entries in the registry, instead of
hardcoding them to use SOAPHeaderImpl and SOAPHeaderSerializer.
In rt/bindings/corba:
* cxf/binding/corba/utils/CorbaObjectReferenceHelper.java: cast to Import
instead of ImportImpl in order to call getDefinition().
Two other things:
* The test in rt/bindings/soap for cxf/binding/soap/SoapDestinationFactoryTest
doesn't actually test anything. It constructs a SOAPAddressImpl object, but
doesn't use it. This should probably be mocked when the test is made to work,
but in the meantime the SOAPAddressImpl should be removed.
* In tools/common, cxf/tools/common/ExtensionInvocationHandler.java makes a
call to getDeclaredMethod. This assumes that all methods are declared in the
object's class. This breaks if the object was implemented using an ancestor
class to define the method being called. This is an unnecessary burden on the
implementor of alternative (non-WSDL4J) extensions. In order to find all
methods, the call to getDeclaredMethod() should be replaced by a call to
getMethod().
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira