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.testGetExpiredLic 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(DelegatingMethodAccessorImp 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()).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.HttpServletDispa >>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.clkt >>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 > > > >------------------------------ > >-------------------------------------------------------------------------- >---- >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.clktr >k > >------------------------------ > >_______________________________________________ >Resteasy-users mailing list >Resteasy-users@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/resteasy-users > > >End of Resteasy-users Digest, Vol 42, Issue 4 >********************************************* -- 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