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()).type(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.HttpServletDispatcher</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.clktrk > > > > _______________________________________________ > 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 ------------------------------------------------------------------------------ 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