On May 29, 2009, at 7:59 AM, Fabio Oliveira wrote:
> Hi Paul,
>
> I did your suggestion, and I the return type for the "o" object is a
> "CortadeiraSmartGWTRequest", another class of mine, but used for
> another resource and path! Crazy!
>
> You have any clues about this?
>
Do both of those JAXB objects have the same XML root element defined,
namely "request" ?
When unmarshalling using JAXB the type returned is based on the XML
root element and the JAXBContext.
Paul.
> Thanks!
>
> On Thu, May 28, 2009 at 6:22 PM, Paul Sandoz <Paul.Sandoz_at_sun.com>
> wrote:
> Hi Fabio,
>
> Perhaps you could try the following:
>
> @PUT
> @Consumes(MediaType.TEXT_XML)
> public SmartGWTResponse putAtividade(@Context HttpContext hc) {
> Object o =
> hc.getRequest().getEntity(AtividadeSmartGWTRequest.class);
> }
>
> and see what is returned.
>
> I am wondering if the XmlRootElement on SmartGWTRequest is confusing
> JAXB, or maybe the generic aspect of that class.
>
> Paul.
>
> On May 28, 2009, at 1:50 PM, Fabio Oliveira wrote:
>
>> Hi Paul,
>>
>> thanks for your answer. The AtividadeSmartGWTRequest is one of my
>> types, with JAXB annotations:
>>
>> @XmlRootElement(name="request")
>> @XmlSeeAlso(AtividadeTO.class)
>> public class AtividadeSmartGWTRequest extends
>> SmartGWTRequest<AtividadeTO> {
>>
>> protected AtividadeSmartGWTRequest() {
>> }
>>
>> public AtividadeSmartGWTRequest(AtividadeTO d) {
>> super(d);
>> }
>>
>> }
>>
>> @XmlAccessorType(XmlAccessType.FIELD)
>> @XmlRootElement(name = "request")
>> public abstract class SmartGWTRequest<T> {
>>
>> private Data<T> data;
>>
>> private String dataSource;
>> private String operationType;
>> private String operationId;
>> private Integer startRow;
>> private Integer endRow;
>> private String sortBy;
>> private String textMatchStyle;
>> private String oldValues;
>>
>>
>> public SmartGWTRequest(T d) {
>> this.data = new Data(d);
>> }
>>
>> protected SmartGWTRequest() {
>> }
>>
>> public T getData() {
>> return data.getData();
>> }
>>
>> public String getDataSource() {
>> return dataSource;
>> }
>>
>> public Integer getEndRow() {
>> return endRow;
>> }
>>
>> public String getOldValues() {
>> return oldValues;
>> }
>>
>> public String getOperationId() {
>> return operationId;
>> }
>>
>> public String getOperationType() {
>> return operationType;
>> }
>>
>> public String getSortBy() {
>> return sortBy;
>> }
>>
>> public Integer getStartRow() {
>> return startRow;
>> }
>>
>> public String getTextMatchStyle() {
>> return textMatchStyle;
>> }
>>
>> @XmlAccessorType(XmlAccessType.FIELD)
>> protected static class Data<T> {
>> @XmlAnyElement(lax=true)
>> private T data;
>>
>> protected Data() {
>> }
>>
>> public Data(T data) {
>> this.data = data;
>> }
>>
>> public T getData() {
>> return data;
>> }
>>
>>
>> }
>> }
>>
>> @XmlRootElement(name = "record")
>> public class AtividadeTO {
>>
>> private int id;
>> private PapelTO papel;
>> private Duration duracao;
>> private long diametroBobina;
>> private long larguraBobina;
>> private long tubete;
>> private String grupos;
>> private int camadas;
>> private DistribuicaoCamadas distribuicao;
>> private int cortadeiraPrincipal;
>> private int sequencia;
>>
>> protected AtividadeTO() {
>> }
>>
>> public AtividadeTO(Atividade a) {
>> this.id = a.getId();
>> this.papel = new PapelTO(a.getPapel());
>> this.duracao = a.getDuracao();
>> this.diametroBobina =
>> a.getGeometriaEntrada().getDiametro().longValue(SI.MILLIMETER);
>> this.larguraBobina =
>> a.getGeometriaEntrada().getLargura().longValue(SI.MILLIMETER);
>> this.tubete =
>> a
>> .getGeometriaEntrada().getDiametroInterno().longValue(SI.MILLIMETER);
>> this.grupos = format(a.getGrupos());
>> this.camadas = a.getCamadas();
>> this.distribuicao = a.getDistribuicao();
>> this.cortadeiraPrincipal =
>> a.getCortadeiraPrincipal().getId();
>> this.sequencia = a.getSequencia();
>> }
>>
>> // And a lot of getters and setters...
>>
>> }
>>
>> The message sent to server is:
>>
>> <request>
>> <data>
>> <record>
>> <id>16757</id>
>> <papel>
>>
>>
>> <descricao>PASTA LINTER ALGODAO/F 1,50 MM 2300 MM</
>> descricao>
>> <id>1050</id>
>> </papel>
>> <duracao>00:00</duracao>
>>
>> <larguraBobina>766</larguraBobina>
>>
>> <diametroBobina>1000</diametroBobina>
>> <tubete>76</tubete>
>> <grupos>1: 700 x 1200<br />2: 200 x 1100</grupos>
>> <camadas>1</camadas>
>>
>>
>> <distribuicao>20x1</distribuicao>
>> <sequencia>0</sequencia>
>> <cortadeiraPrincipal>2</cortadeiraPrincipal>
>> </record>
>> </data>
>>
>>
>> <dataSource>filaAtividadeDS</dataSource>
>> <operationType>update</operationType>
>> <operationId></operationId>
>> <startRow></startRow>
>> <endRow></endRow>
>>
>>
>> <sortBy></sortBy>
>> <textMatchStyle></textMatchStyle>
>> <oldValues></oldValues>
>> </request>
>>
>>
>> I don't know if it looks familiar for anyone, but I'm using the
>> SmartGWT widget toolkit (http://www.smartclient.com/smartgwt) and
>> trying to integrate with the Jersey, with a Restful architecture.
>>
>> I can't figure out where I'm missing the point, everything worked
>> well until now, but I'm already working against this problem for 2
>> days, without clues...
>>
>> Any help will be appreciated....
>>
>>
>> On Thu, May 28, 2009 at 4:35 PM, Paul Sandoz <Paul.Sandoz_at_sun.com>
>> wrote:
>> Hi Fabio,
>>
>> Unfortunately there is no logging statements in the code. I want to
>> enable a much more dynamic approach with the concept of a developer
>> mode that adapts classes with logging information rather than
>> "polluting" the runtime code with logging statements.
>>
>> What is AtividadeSmartGWTRequest? a JAXB object or your own type?
>> if the latter i presume you have message body reader for that type,
>> are you sure the reader is returning an instance compatible with
>> that type?
>>
>> Paul.
>>
>> On May 28, 2009, at 11:06 AM, Fabio Oliveira wrote:
>>
>>> Hi list!
>>>
>>> Is there any way to log the Jersey activity? I'm having problems
>>> while sending a msg and parsing using Jersey, and I'm receiving
>>> the message:
>>>
>>> java.lang.IllegalArgumentException: argument type mismatch
>>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>
>>> sun
>>> .reflect
>>> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>
>>> sun
>>> .reflect
>>> .DelegatingMethodAccessorImpl
>>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>> java.lang.reflect.Method.invoke(Method.java:597)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl.model.method.dispatch.AbstractResourceMethodDispatchProvider
>>> $
>>> TypeOutInvoker
>>> ._dispatch(AbstractResourceMethodDispatchProvider.java:156)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl
>>> .model
>>> .method
>>> .dispatch
>>> .ResourceJavaMethodDispatcher
>>> .dispatch(ResourceJavaMethodDispatcher.java:67)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:
>>> 166)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:
>>> 108)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:114)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:74)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:114)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl
>>> .uri
>>> .rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:
>>> 66)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl
>>> .application
>>> .WebApplicationImpl._handleRequest(WebApplicationImpl.java:658)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl
>>> .application
>>> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:616)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl
>>> .application
>>> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:607)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .spi.container.servlet.WebComponent.service(WebComponent.java:309)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .spi
>>> .container.servlet.ServletContainer.service(ServletContainer.java:
>>> 425)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .spi
>>> .container.servlet.ServletContainer.service(ServletContainer.java:
>>> 590)
>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>>
>>> org
>>> .springframework
>>> .orm
>>> .jpa
>>> .support
>>> .OpenEntityManagerInViewFilter
>>> .doFilterInternal(OpenEntityManagerInViewFilter.java:112)
>>>
>>> org
>>> .springframework
>>> .web
>>> .filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>>>
>>> javawebparts
>>> .filter.CompressionFilter.doFilter(CompressionFilter.java:309)
>>>
>>> My method signature:
>>>
>>> @PUT
>>> @Consumes(MediaType.TEXT_XML)
>>> public SmartGWTResponse putAtividade(AtividadeSmartGWTRequest
>>> request) {
>>> ...
>>> }
>>>
>>>
>>> Thanks!
>>>
>>> --
>>>
>>> Fábio Braga de Oliveira
>>> ArchitecTeam Consulting
>>> http://www.linkedin.com/in/fabiobragaoliveira
>>> E-mail: fabio.braga_at_gmail.com
>>> Mobile: +55 19 9270-6574
>>>
>>
>>
>>
>>
>> --
>>
>> Fábio Braga de Oliveira
>> ArchitecTeam Consulting
>> http://www.linkedin.com/in/fabiobragaoliveira
>> E-mail: fabio.braga_at_gmail.com
>> Mobile: +55 19 9270-6574
>>
>
>
>
>
> --
>
> Fábio Braga de Oliveira
> ArchitecTeam Consulting
> http://www.linkedin.com/in/fabiobragaoliveira
> E-mail: fabio.braga_at_gmail.com
> Mobile: +55 19 9270-6574
>