Lucas_Cavalcanti 31 de ago. de 2012
bizarro chamar o shouldSerializeMember na deserialização…
vc tá mandando o json com root? tipo {“dado”: {…}}
galmeida 31 de ago. de 2012
Po Lucas, não tinha nem me dado conta… verdade, né… bem bizarro.
Então, tente com e sem root, ambos deram o mesmo problema… e se em debug eu inicializo o serializee com new Serializee() rola tudo direitinho.
Lucas_Cavalcanti 31 de ago. de 2012
vc consegue isolar esse problema?
abre uma issue, por favor:
melhor ainda se vc quiser mandar um pull request e contribuir com o VRaptor =)
galmeida 31 de ago. de 2012
Segunda feira vou dar mais uma olhada, se eu encontrar uma solução que parecer consistente eu mando um pull request.
galmeida 15 de out. de 2012
Finalmente pude voltar à esse problema, e resolvi antes de mais nada validar alguns pontos básicos:
versões:
vraptor 3.4.1
restfulie 1.0.1
configuração do (de)serializer:
@ Component
@ PrototypeScoped
public class CustomXStreamBuilder extends XStreamBuilderImpl {
public CustomXStreamBuilder ( XStreamConverters converters , TypeNameExtractor extractor ) {
super ( converters , extractor );
}
@ Override
public XStream configure ( XStream xstream ) {
XStream instance = super . configure ( xstream );
instance . processAnnotations ( Dado . class );
return instance ;
}
}
é isso mesmo que deveria ser feito?
Lucas_Cavalcanti 15 de out. de 2012
teoricamente sim, isso funcionou?
galmeida 15 de out. de 2012
Não, não funcionou, deu o NPE descrito acima…
acabei de compilar uma versao custom do VRaptor 2.4.1 que inicializa o serializee com new Serializee() na declaração, pelos meus testes em debug, deve resolver… só que não consegui entender o problema, está me parecendo uma correção meio gambiarra
Lucas_Cavalcanti 15 de out. de 2012
tenta fazer o seguinte:
VRaptorClassMapper mapper = (VRaptorClassMapper) xstream.getMapper();
mapper.setSerializee(new Serializee())
se isso funcionar a gente corrige no vraptor de verdade
galmeida 15 de out. de 2012
Não entendi, onde é para fazer isso? de onde devo pegar o xstream?
galmeida 15 de out. de 2012
Lucas,
alterando o CustomXStreamBuilder para isso aqui, funcionou:
@Component
@PrototypeScoped
public class CustomXStreamBuilder extends XStreamBuilderImpl {
public CustomXStreamBuilder ( XStreamConverters converters , TypeNameExtractor extractor ) {
super ( converters , extractor );
}
@Override
public XStream configure ( XStream xstream ) {
XStream instance = super . configure ( xstream );
instance . processAnnotations ( Dado . class );
VRaptorClassMapper mapper = (( VRaptorXStream ) instance ). getVRaptorMapper ();
mapper . setSerializee ( new Serializee ());
return instance ;
}
Lucas_Cavalcanti 15 de out. de 2012
legal!
faz um pull request lah pro VRaptor, por favor?
/***
* Copyright (c) 2009 Caelum - www.caelum.com.br/opensource
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package br.com.caelum.vraptor.serialization.xstream ;
import java.util.Calendar ;
This file has been truncated. show original
começar com o serializee como new Serializee()
ou pelo menos abre uma issue?
galmeida 16 de out. de 2012
Lucas_Cavalcanti 16 de out. de 2012