You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Marc Baumgartner (JIRA)" <ji...@apache.org> on 2010/01/20 08:06:11 UTC
[jira] Created: (CXF-2627) Return Type List gets null on client if
an empty list is returned
Return Type List gets null on client if an empty list is returned
-----------------------------------------------------------------
Key: CXF-2627
URL: https://issues.apache.org/jira/browse/CXF-2627
Project: CXF
Issue Type: Bug
Components: JAXB Databinding
Affects Versions: 2.1.8
Environment: JSE 1.5 on Win XP
Reporter: Marc Baumgartner
Priority: Critical
Attachments: EmptyListExample.zip
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.
[jira] Resolved: (CXF-2627) Return Type List gets null on client if
an empty list is returned
Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp resolved CXF-2627.
------------------------------
Resolution: Fixed
Fix Version/s: 2.2.7
Assignee: Daniel Kulp
Using the getter/setter things above is the only workaround for 2.2.6. Fix will be in place for 2.2.7.
> Return Type List gets null on client if an empty list is returned
> -----------------------------------------------------------------
>
> Key: CXF-2627
> URL: https://issues.apache.org/jira/browse/CXF-2627
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.1.8
> Environment: JSE 1.5 on Win XP
> Reporter: Marc Baumgartner
> Assignee: Daniel Kulp
> Priority: Critical
> Fix For: 2.2.7
>
> Attachments: EmptyListExample.zip
>
>
> 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.
[jira] Updated: (CXF-2627) Return Type List gets null on client if
an empty list is returned
Posted by "Kaj Kandler (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kaj Kandler updated CXF-2627:
-----------------------------
Attachment: EmptyListExample-2.2.9.zip
Sorry to say, but this issue is not working yet it 2.2.9.
I attach this modified Example to show that only the workaround does work but the actual case of the public bean member in the wrapper class still does not work.
> Return Type List gets null on client if an empty list is returned
> -----------------------------------------------------------------
>
> Key: CXF-2627
> URL: https://issues.apache.org/jira/browse/CXF-2627
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.1.8
> Environment: JSE 1.5 on Win XP
> Reporter: Marc Baumgartner
> Assignee: Daniel Kulp
> Priority: Critical
> Fix For: 2.2.7
>
> Attachments: EmptyListExample-2.2.9.zip, EmptyListExample.zip
>
>
> 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.
[jira] Updated: (CXF-2627) Return Type List gets null on client if
an empty list is returned
Posted by "Marc Baumgartner (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marc Baumgartner updated CXF-2627:
----------------------------------
Attachment: EmptyListExample.zip
Eclipse/Maven Project to reproduce the behavior.
> Return Type List gets null on client if an empty list is returned
> -----------------------------------------------------------------
>
> Key: CXF-2627
> URL: https://issues.apache.org/jira/browse/CXF-2627
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.1.8
> Environment: JSE 1.5 on Win XP
> Reporter: Marc Baumgartner
> Priority: Critical
> Attachments: EmptyListExample.zip
>
>
> 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.
[jira] Updated: (CXF-2627) Return Type List gets null on client if
an empty list is returned
Posted by "Kaj Kandler (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kaj Kandler updated CXF-2627:
-----------------------------
Attachment: EmptyListExample-2.2.9.log
> Return Type List gets null on client if an empty list is returned
> -----------------------------------------------------------------
>
> Key: CXF-2627
> URL: https://issues.apache.org/jira/browse/CXF-2627
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.1.8
> Environment: JSE 1.5 on Win XP
> Reporter: Marc Baumgartner
> Assignee: Daniel Kulp
> Priority: Critical
> Fix For: 2.2.7
>
> Attachments: EmptyListExample-2.2.9.log, EmptyListExample-2.2.9.zip, EmptyListExample.zip
>
>
> 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.
[jira] Updated: (CXF-2627) Return Type List gets null on client if
an empty list is returned
Posted by "Marc Baumgartner (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marc Baumgartner updated CXF-2627:
----------------------------------
Description:
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
was:
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
> Return Type List gets null on client if an empty list is returned
> -----------------------------------------------------------------
>
> Key: CXF-2627
> URL: https://issues.apache.org/jira/browse/CXF-2627
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.1.8
> Environment: JSE 1.5 on Win XP
> Reporter: Marc Baumgartner
> Priority: Critical
> Attachments: EmptyListExample.zip
>
>
> 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.
[jira] Commented: (CXF-2627) Return Type List gets null on client
if an empty list is returned
Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12802912#action_12802912 ]
Daniel Kulp commented on CXF-2627:
----------------------------------
If you change the wrapper bean to:
{code:java}
@XmlType(name = "CustomerListResponse")
public class CustomerListResponse {
private List<Customer> customerList;
public void setCustomerList(List<Customer> l) {
customerList = l;
}
@XmlElementWrapper(nillable = true, name = "return")
@XmlElement(name = "CustomerList")
public List<Customer> getCustomerList() {
return customerList;
}
}
{code}
it seems to work fine. It only seems to be an issue if the annotations are on a public field. That's at least a workaround for you.
> Return Type List gets null on client if an empty list is returned
> -----------------------------------------------------------------
>
> Key: CXF-2627
> URL: https://issues.apache.org/jira/browse/CXF-2627
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.1.8
> Environment: JSE 1.5 on Win XP
> Reporter: Marc Baumgartner
> Priority: Critical
> Attachments: EmptyListExample.zip
>
>
> 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.