cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Staffan (JIRA)" <j...@apache.org>
Subject [jira] Created: (CXF-2978) CLONE -Return Type List gets null on client if an empty list is returned
Date Tue, 07 Sep 2010 13:30:35 GMT
CLONE -Return Type List gets null on client if an empty list is returned
------------------------------------------------------------------------

                 Key: CXF-2978
                 URL: https://issues.apache.org/jira/browse/CXF-2978
             Project: CXF
          Issue Type: Bug
          Components: JAXB Databinding
    Affects Versions: 2.1.8
         Environment: JSE 1.5 on Win XP
            Reporter: Staffan
            Assignee: Daniel Kulp
            Priority: Critical
             Fix For: 2.2.7


If you have a function that returns an empty list  the result will be null on client. Even
If add a Responsewrapper to the interface it doesn't work. If have attached a little test
project / program:

Interface:
@WebService(targetNamespace = "http://cxf.apache.org/demo/CustomerService/1/", name = "CustomerService")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL)
public interface CustomerService {

	@WebMethod(action = "findCustomer", operationName = "findCustomer")
	public @WebResult(name = "customerList")
	List<Customer> findCustomer();
	
	
	@WebMethod(action = "findCustomer2", operationName = "findCustomer2")
	@ResponseWrapper(className="demo.service.CustomerListResponse")
	public @WebResult(name = "customerList")
	List<Customer> findCustomer2();

}

The Implementation:

@WebService(name = "CustomerService", serviceName = "CustomerService", targetNamespace = "http://cxf.apache.org/demo/CustomerService/1/",
endpointInterface = "demo.service.CustomerService")
public class CustomerServiceImpl implements CustomerService {

	public List<Customer> findCustomer() {
		// very stupid method
		return new ArrayList<Customer>();
	}

	public List<Customer> findCustomer2() {
		// another very stupid method
		return new ArrayList<Customer>();
	}

}

And this is the main programm:
public static void main(String args[]) throws Exception {
		new Server();
		System.out.println("Server ready...");

		// Now Call the Service
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.getInInterceptors().add(new LoggingInInterceptor());

		factory.getOutInterceptors().add(new LoggingOutInterceptor());

		factory.setServiceClass(CustomerService.class);

		factory.setAddress("http://localhost:9000/CustomerService");

		CustomerService client = (CustomerService) factory.create();

		System.out.println("call findCustomer()");

		List<Customer> result = client.findCustomer();


		if (result != null)
			System.out.println("Listsize: " + result.size());
		else
			System.out.println("List is null: " + result);

		System.out.println("call findCustomer2()");

		result = client.findCustomer2();

		if (result != null) 
                         System.out.println("Listsize: " + result.size());
		else
			System.out.println("List is null: " + result);

		System.out.println("Server exiting");
                System.exit(0);
	}

This will print the following output:

Server ready...
call findCustomer()
20.01.2010 07:49:45 org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
INFO: Outbound Message
---------------------------
ID: 1
Address: http://localhost:9000/CustomerService
Encoding: UTF-8
Content-Type: text/xml
Headers: {SOAPAction=["findCustomer"], Accept=[*/*]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:findCustomer
xmlns:ns2="http://cxf.apache.org/demo/CustomerService/1/"/></soap:Body></soap:Envelope>
--------------------------------------
20.01.2010 07:49:45 org.apache.cxf.interceptor.LoggingInInterceptor logging
INFO: Inbound Message
----------------------------
ID: 1
Encoding: UTF-8
Content-Type: text/xml; charset=utf-8
Headers: {Content-Length=[194], Server=[Jetty(6.1.21)], content-type=[text/xml; charset=utf-8]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:findCustomerResponse
xmlns:ns2="http://cxf.apache.org/demo/CustomerService/1/"/></soap:Body></soap:Envelope>
--------------------------------------
List is null: null
call findCustomer2()
20.01.2010 07:49:45 org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
INFO: Outbound Message
---------------------------
ID: 2
Address: http://localhost:9000/CustomerService
Encoding: UTF-8
Content-Type: text/xml
Headers: {SOAPAction=["findCustomer2"], Accept=[*/*]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:findCustomer2
xmlns:ns2="http://cxf.apache.org/demo/CustomerService/1/"/></soap:Body></soap:Envelope>
--------------------------------------
20.01.2010 07:49:45 org.apache.cxf.interceptor.LoggingInInterceptor logging
INFO: Inbound Message
----------------------------
ID: 2
Encoding: UTF-8
Content-Type: text/xml; charset=utf-8
Headers: {Content-Length=[300], Server=[Jetty(6.1.21)], content-type=[text/xml; charset=utf-8]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:findCustomer2Response
xmlns:ns2="http://cxf.apache.org/demo/CustomerService/1/"><return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:nil="true"/></ns2:findCustomer2Response></soap:Body></soap:Envelope>
--------------------------------------
List is null: null
Server exiting


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message