Hi

Unfortunately the actual messages available from JAXBExceptions are
limiting, it is really a stack trace which contains some useful information,
so on the trunk the stack traces are also being logged now.
I'm quite convinced it's a JAXB thing - some sort of naming convention issue
or whatever. I'd advise to check on JAXB lists in such cases.

Doing a quick test on the trunk reveals :

24-Jul-2009 09:53:49 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider
handleJAXBException
WARNING: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts
of IllegalAnnotationExceptions
org.apache.cxf.jaxrs.provider.JAXBElementProviderTest$Location does not have
a no-arg default constructor.
        this problem is related to the following location:
                at 
org.apache.cxf.jaxrs.provider.JAXBElementProviderTest$Location
                at public java.util.List
org.apache.cxf.jaxrs.provider.JAXBElementProviderTest$Locations.getLocations()
                at 
org.apache.cxf.jaxrs.provider.JAXBElementProviderTest$Locations

After adding a default Location constructor we now get :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Locations><locations><id>1</id></locations></Locations>

cheers, Sergey



yong wrote:
> 
> Hello,
> 
> I have googled these issues before coming to tihs forum. I have seen a
> couple of related posts on this forum but didn't see how they were
> resolved.
> 
> Here is the simple test code I have:
> 
> Locations.java
> --------------
> @XmlRootElement(name = "Locations")
> public class Locations
> {
>     private List<Location> locations;
> 
>     public void setLocations(final List<Location> locations)
>     {
>         this.locations = locations; 
>     }
> 
>     public List<Location> getLocations()
>     {
>         return locations;
>     }
> }
> 
> Location.java
> -------------
> @XmlRootElement(name = "Location")
> public class Location
> {
>     private String id;
> 
>     public Location(String id)
>     {
>         this.id = id;
>     }
>     
>     public void setId(String id)
>     {
>         this.id = id;
>     }
> 
>     public String getId()
>     {
>         return id;
>     }
> }
> 
> LocationServices.java
> ---------------------
> @Path("/locationservices/")
> public class LocationServices
> {
>     private static final Logger log = LogManager
>             .getLogger(LocationManagerServiceImpl.class);
> 
>     @POST
>     @Path("/pilot/{id}")
>     public Response updatePilotLocations(@PathParam("id") String id,
> Locations locations)
>     {
>          Long appId = Long.parseLong(id);
>          log.debug("Received appid = " + appId);
> 
>         if (locations == null || locations.getLocations() == null)
>         {
>             log.warn("Received empty location list.");
>             return Response.notModified().build();
>         }
>         
>         for (Location loc : locations.getLocations())
>         {
>             log.debug("Received loc = " + loc.getId());
>         }
>         
>         return Response.ok(locations).build();
>     }
> 
>     @GET
>     @Path("/pilot/{id}")
>     public String getPilotLocation(@PathParam("id") String id)
>     {
>         log.debug("Received id = " + id);
>         return "OK";
>     }
> 
>     @GET
>     @Path("/pilot/")
>     public Locations getPilotLocations()
>     {
>         log.debug("In getPilotLocations");
>         Locations locs = new Locations();
>         List<Location> l = new ArrayList<Location>();
>         l.add(new Location("1"));
>         l.add(new Location("2"));
>         locs.setLocations(l);
>         return locs;
>     }
> }
> 
> I am seeing 2 issues related to Collection/List:
> 
> Issue #1
> ======
> In getPilotLocations(), it is giving:
> 2009-07-23 17:09:49,387 INFO  [STDOUT] (TP-Processor3) 7145811
> [TP-Processor3] DEBUG com.apps.service.rest.LocationServices  - In
> getPilotLocations
> 2009-07-23 17:09:49,484 ERROR [STDERR] (TP-Processor3) Jul 23, 2009
> 5:09:49 PM org.apache.cxf.jaxrs.provider.AbstractJAXBProvider
> handleJAXBException
> WARNING: JAXBException occurred : 1 counts of IllegalAnnotationExceptions
> 2009-07-23 17:09:49,485 INFO  [STDOUT] (TP-Processor3) 7145909
> [TP-Processor3] ERROR STDERR  - Jul 23, 2009 5:09:49 PM
> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
> WARNING: JAXBException occurred : 1 counts of IllegalAnnotationExceptions
> 2009-07-23 17:09:49,493 ERROR [STDERR] (TP-Processor3) Jul 23, 2009
> 5:09:49 PM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper
> toResponse
> WARNING: WebApplicationException has been caught : 1 counts of
> IllegalAnnotationExceptions
> 2009-07-23 17:09:49,494 INFO  [STDOUT] (TP-Processor3) 7145918
> [TP-Processor3] ERROR STDERR  - Jul 23, 2009 5:09:49 PM
> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
> WARNING: WebApplicationException has been caught : 1 counts of
> IllegalAnnotationExceptions
> 2009-07-23 17:09:49,517 ERROR [STDERR] (TP-Processor3) Jul 23, 2009
> 5:09:49 PM
> org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
> INFO: Outbound Message
> ---------------------------
> ID: 1
> Encoding: 
> Content-Type: text/plain
> Headers: {Content-Type=[text/plain]}
> Payload: JAXBException occurred : 1 counts of IllegalAnnotationExceptions
> --------------------------------------
> 2009-07-23 17:09:49,518 INFO  [STDOUT] (TP-Processor3) 7145942
> [TP-Processor3] ERROR STDERR  - Jul 23, 2009 5:09:49 PM
> org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
> INFO: Outbound Message
> ---------------------------
> ID: 1
> Encoding: 
> Content-Type: text/plain
> Headers: {Content-Type=[text/plain]}
> Payload: JAXBException occurred : 1 counts of IllegalAnnotationExceptions
> --------------------------------------
> 
> Issue #2
> ======
> In my updatePilotLocations() - a POST, I am seeing null for
> locations.getLocations():
> 
> 2009-07-23 16:01:33,850 INFO  [STDOUT] (TP-Processor2) 3050274
> [TP-Processor2] ERROR STDERR  - Jul 23, 2009 4:01:33 PM
> org.apache.cxf.interceptor.LoggingInInterceptor logging
> INFO: Inbound Message
> ----------------------------
> ID: 1
> Address: /rest/locationservices/pilot/
> Encoding: ISO-8859-1
> Content-Type: text/xml; charset=ISO-8859-1
> Headers: {content-length=[62], host=[test.apps.com], user-agent=[Jakarta
> Commons-HttpClient/3.0], Content-Type=[text/xml; charset=ISO-8859-1],
> content-type=[text/xml; charset=ISO-8859-1], Accept=[text/xml]}
> Payload: <Locations>
> <Location>
> <id>1</id>
> </Location>
> </Locations>
> --------------------------------------
> 2009-07-23 16:01:34,023 WARN  [com.apps.service.rest.LocationServices]
> (TP-Processor2) Received empty location list.
> 2009-07-23 16:01:34,024 INFO  [STDOUT] (TP-Processor2) 3050448
> [TP-Processor2] WARN com.apps.service.rest.LocationServices  - Received
> empty location list.
> 
> Could someone please shed some light on these issues? I would really
> appreciate your help!
> Thanks
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/CXF-2.2.2-handling-of-Collection-broken--tp24637431p24641295.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to