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