So, I've resolved my issue by updating my schema with jaxb:version="2.0"
and regenerating
the jaxb classes. The tip off was Bill's mention of there being a
Resteasy Client -> JAX-RS 2.0 mismatch migration problem
Cheers!
Gaby

>On 27/11/13 10:00 AM, "Gabriella Turek" <gabriella.tu...@niwa.co.nz>
>wrote:
>
>>No, I've tried that, it does not work. I get the following error:
>>
>>java.lang.ClassCastException: javax.xml.bind.JAXBElement cannot be cast
>>to
>>nz.org.riskscape.license.rest.domain.LicenseList
>>      at
>>nz.org.riskscape.license.rest.RiskScapeLicenseServiceTest.testGetExpiredL
>>i
>>c
>>enses(RiskScapeLicenseServiceTest.java:102)
>>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>      at
>>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
>>:
>>5
>>7)
>>      at
>>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
>>m
>>p
>>l.java:43)
>>      at java.lang.reflect.Method.invoke(Method.java:606)
>>
>>
>>--
>>Dr Gabriella Turek
>>Sr. Software Engineer, Systems Development Team
>>NIWA Auckland, New Zealand
>>Tel: +64 9 3754645
>>www.niwa.co.nz
>>NIWA - Enhancing the benefit of New ZealandĀ¹s natural resources.
>>
>>
>>>Date: Tue, 26 Nov 2013 15:51:56 -0500
>>>From: Bill Burke <bbu...@redhat.com>
>>>Subject: Re: [Resteasy-users] Replacing ProxyFactory with
>>>     RestEasyWebTarget does not work
>>>To: resteasy-users@lists.sourceforge.net
>>>Message-ID: <529509ec.3000...@redhat.com>
>>>Content-Type: text/plain; charset=windows-1252; format=flowed
>>>
>>>This is a Resteasy Client -> JAX-RS 2.0 mismatch migration problem.
>>>
>>>Replace:
>>>
>>>response.getEntity()
>>>
>>>with:
>>>
>>>response.readEntity(String.class);
>>>
>>>replace String.class to whatever class you want to marshal to.
>>>getEntity() returns null if you haven't unmarshalled anything with
>>>readEntity().
>>>
>>>
>>>
>>>On 11/26/2013 2:59 PM, Gabriella Turek wrote:
>>>> After upgrading from Resteasy 2.4 to 3.0.5, none of my client calls
>>>>work
>>>> anymore. The entity which I am expecting (as simple as a String) is
>>>> always null. In debug mode I can see it being set in the Response
>>>>object
>>>> on the server side, but on the client side the entity in the Response
>>>>is
>>>> null.
>>>> Here is an example call:
>>>>
>>>> The interface:
>>>>
>>>> |   /**
>>>>     * @return all expired licenses
>>>>     */
>>>>    @GET
>>>>    @ClientResponseType(entityType=  LicenseList.class)
>>>>    @Path("/expired")
>>>>    @Produces(MediaType.APPLICATION_XML)
>>>>    public  Response  getExpiredLicenses();|
>>>>
>>>> The implementation:
>>>>
>>>> |   /**
>>>>     * @return all expired licenses
>>>>     */
>>>>    @Override
>>>>    public  Response  getExpiredLicenses()  {
>>>>      try  {
>>>>        LicenseList  list=  LicensesDBUtil.getExpiredLicenses();
>>>>        Response  resp=  Response.ok().entity(list).build();
>>>>        return  resp;
>>>>      }  catch  (SQLException  e)  {
>>>>        LOG.error("Error getting expired licenses :"  +
>>>>e.getMessage());
>>>>        return
>>>>Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).ty
>>>>p
>>>>e
>>>>(MediaType.TEXT_PLAIN).build();
>>>>      }|
>>>>
>>>> The test call :
>>>>
>>>> |   @Test
>>>>    public  void  testGetExpiredLicenses()  throws  Exception  {
>>>>          ResteasyClientBuilder  rsb=  new  ResteasyClientBuilder();
>>>>      ResteasyClient  rsc=  rsb.build();
>>>>      ResteasyWebTarget  target=  rsc.target(BASEURL);
>>>>      return  target.proxy(RiskScapeLicenseService.class);
>>>>      Response  response=  client.getExpiredLicenses();
>>>>      assertTrue(HttpResponseCodes.SC_OK==  response.getStatus());
>>>>      @SuppressWarnings("unchecked")
>>>>      JAXBElement<LicenseList>  element=  (JAXBElement<LicenseList>)
>>>>response.getEntity();
>>>>      LicenseList  list=  element.getValue();
>>>>      assertEquals(4,  list.getLicenses().size());
>>>>      for  (License  lic:  list.getLicenses())  {
>>>>        assertTrue((new
>>>>Date()).after(DateUtils.parseDate(lic.getValidTo(),  new  String[]  {
>>>>"yyyy-MM-dd"  })));
>>>>      }
>>>>    }|
>>>>
>>>> My web.xml file:
>>>>
>>>> |<?xml version="1.0"  encoding="UTF-8"?>
>>>> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>xmlns="http://java.sun.com/xml/ns/javaee";
>>>>xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>>>>xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>>http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";  version="2.5">
>>>>    <display-name>riskscapelic_rest</display-name>
>>>>    <listener>
>>>>      <listener-class>
>>>>
>>>>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
>>>>      </listener-class>
>>>>    </listener>
>>>>    <servlet>
>>>>      <servlet-name>Resteasy</servlet-name>
>>>>
>>>><servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDis
>>>>p
>>>>a
>>>>tcher</servlet-class>
>>>>    </servlet>
>>>>    <servlet-mapping>
>>>>      <servlet-name>Resteasy</servlet-name>
>>>>      <url-pattern>/*</url-pattern>
>>>>    </servlet-mapping>
>>>>    <context-param>
>>>>      <param-name>resteasy.scan</param-name>
>>>>      <param-value>true</param-value>
>>>>    </context-param>
>>>>    <context-param>
>>>>      <param-name>resteasy.servlet.mapping.prefix</param-name>
>>>>      <param-value>/</param-value>
>>>>    </context-param>
>>>> </web-app>|
>>>>
>>>> The LicenseList class:
>>>>
>>>> |@XmlRootElement(name=  "LicenseList")
>>>> @XmlAccessorType(XmlAccessType.FIELD)
>>>> @XmlType(name=  "licenseList",  propOrder=  {
>>>>      "licenses"
>>>> })
>>>> public  class  LicenseList  {
>>>>
>>>>      @XmlElement(name=  "Licenses",  required=  true)
>>>>      protected  List<License>  licenses;
>>>>
>>>>      /**
>>>>       * Gets the value of the licenses property.
>>>>       *
>>>>       * <p>
>>>>       * This accessor method returns a reference to the live list,
>>>>       * not a snapshot. Therefore any modification you make to the
>>>>       * returned list will be present inside the JAXB object.
>>>>       * This is why there is not a <CODE>set</CODE> method for the
>>>>licenses property.
>>>>       *
>>>>       * <p>
>>>>       * For example, to add a new item, do as follows:
>>>>       * <pre>
>>>>       *    getLicenses().add(newItem);
>>>>       * </pre>
>>>>       *
>>>>       *
>>>>       * <p>
>>>>       * Objects of the following type(s) are allowed in the list
>>>>       * {@link License }
>>>>       *
>>>>       *
>>>>       */
>>>>      public  List<License>  getLicenses()  {
>>>>          if  (licenses==  null)  {
>>>>              licenses=  new  ArrayList<License>();
>>>>          }
>>>>          return  this.licenses;
>>>>      }
>>>>
>>>> }|
>>>>
>>>> I am using JDK 1.7, Tomcat 7.0.47
>>>> --
>>>> Dr Gabriella Turek
>>>> Sr. Software Engineer, Systems Development Team
>>>> NIWA Auckland, New Zealand
>>>> Tel: +64 9 3754645
>>>> www.niwa.co.nz
>>>> NIWA - Enhancing the benefit of New Zealand?s natural resources.
>>>> --
>>>> Please consider the environment before printing this email.
>>>> NIWA is the trading name of the National Institute of Water &
>>>> Atmospheric Research Ltd.
>>>>
>>>>
>>>>
>>>>-----------------------------------------------------------------------
>>>>-
>>>>-
>>>>-----
>>>> Rapidly troubleshoot problems before they affect your business. Most
>>>>IT
>>>> organizations don't have a clear picture of how application
>>>>performance
>>>> affects their revenue. With AppDynamics, you get 100% visibility into
>>>>your
>>>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
>>>>AppDynamics Pro!
>>>>
>>>>http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.cl
>>>>k
>>>>t
>>>>rk
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Resteasy-users mailing list
>>>> Resteasy-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/resteasy-users
>>>>
>>>
>>>--
>>>Bill Burke
>>>JBoss, a division of Red Hat
>>>http://bill.burkecentral.com

--
Please consider the environment before printing this email.
NIWA is the trading name of the National Institute of Water & Atmospheric 
Research Ltd.
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users

Reply via email to