Serializar Json com Gson

1,422 views
Skip to first unread message

Renan Reis

unread,
Apr 13, 2012, 3:06:57 PM4/13/12
to caelum-...@googlegroups.com
Pessoal,

estou propondo desenvolvermos um plugin para que o vraptor possa serializar JSON com o Gson. O motivo é que apesar do Xstream fazer um ótimo trabalho com xml, ele possui algumas deficiências quando se trata de json.

Existem algumas implementações legais, porém, não são 100% compatíveis com a API do Vraptor.

O Gson serializa todos os atributos dos objetos e pelo que notei é em recursão de profundidade.

Comecei uma implementação, mas ficou horrível. Consegui fazer a compatibilidade incluindo apenas alguns campos no result como .include("pessoa.empresa.endereco"), assim, ele serializa o endereço da empresa, porém, depois serializa o endereço da pessoa, oque não pode ocorrer (vou criar um teste para essa situação). Me esforcei muito e confesso achei complicado resolver tal problema. Também preciso tratar collections, oque não fiz ainda.

Caso alguém se interesse na proposta existe um git https://github.com/renanreismartins/vraptor-gson-compatible

grande abraço

Otávio Garcia

unread,
Apr 13, 2012, 3:16:22 PM4/13/12
to caelum-...@googlegroups.com
Existe este plugin que usei há algum tempo atrás para fazer uns testes.

https://github.com/luizsignorelli/vraptor-gson-serializer

2012/4/13 Renan Reis <renanrei...@gmail.com>
--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/juTPSpbGIgsJ.
To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/caelum-vraptor?hl=en.

Renan Reis

unread,
Apr 13, 2012, 3:20:36 PM4/13/12
to caelum-...@googlegroups.com
Oi Otávio também uso ele, porém note que a api não é 100% compatível.

Ele serializa todos os atributos do objeto, incluindo dependencias. Caso não queira esse comportamento vc tem que informar via annotations quais campos excluir. Repare no codigo que os métodos include e exclude não possuem lógica pra isso.

abraços

Em sexta-feira, 13 de abril de 2012 16h16min22s UTC-3, Otávio Garcia escreveu:
Existe este plugin que usei há algum tempo atrás para fazer uns testes.

https://github.com/luizsignorelli/vraptor-gson-serializer

2012/4/13 Renan Reis <renanrei...@gmail.com>
Pessoal,

estou propondo desenvolvermos um plugin para que o vraptor possa serializar JSON com o Gson. O motivo é que apesar do Xstream fazer um ótimo trabalho com xml, ele possui algumas deficiências quando se trata de json.

Existem algumas implementações legais, porém, não são 100% compatíveis com a API do Vraptor.

O Gson serializa todos os atributos dos objetos e pelo que notei é em recursão de profundidade.

Comecei uma implementação, mas ficou horrível. Consegui fazer a compatibilidade incluindo apenas alguns campos no result como .include("pessoa.empresa.endereco"), assim, ele serializa o endereço da empresa, porém, depois serializa o endereço da pessoa, oque não pode ocorrer (vou criar um teste para essa situação). Me esforcei muito e confesso achei complicado resolver tal problema. Também preciso tratar collections, oque não fiz ainda.

Caso alguém se interesse na proposta existe um git https://github.com/renanreismartins/vraptor-gson-compatible

grande abraço

--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/juTPSpbGIgsJ.
To post to this group, send email to caelum-vraptor@googlegroups.com.
To unsubscribe from this group, send email to caelum-vraptor+unsubscribe@googlegroups.com.

Lucas Cavalcanti

unread,
Apr 13, 2012, 5:23:53 PM4/13/12
to caelum-...@googlegroups.com
O plugin que você criou é baseado no do Luiz? Se sim, seria legal fazer o merge dos dois e criar um plugin só que faz tudo, que acham?

2012/4/13 Renan Reis <renanrei...@gmail.com>
To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/PmprDnHOt3sJ.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Dev.Softhouse

unread,
Jun 21, 2012, 9:14:33 AM6/21/12
to caelum-...@googlegroups.com
Bom dia a todos.

Eu estou testando os plugins para gson do github do vraptor, e num primeiro momento não me parecem melhores do que o XStream.
Esse plugin do luiz, lança exception quando encontra um proxy do Hibernate, sobre a referência circular que o XStream lança, eu fiz ele serializar:
objetoA{
 objetoB;
}
objetoB{
 objetoA;
}

dai ele lança:
exception raised, check root cause for details: java.lang.StackOverflowError

Qual a vantagem do gson sobre o XStream (ou vise versa)?

Renan Reis

unread,
Jun 21, 2012, 11:11:58 AM6/21/12
to caelum-...@googlegroups.com
Pessoal, depois de muito trabalhos conseguimos desenvolver um plugin enxuto e que passa em todos os testes do vraptor, sendo 100% compativel com a api.



vou falar com o lucas e o paulo para que coloquemos no rep.

abrasss

To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/CylTslbm4ocJ.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Dev.Softhouse

unread,
Jun 21, 2012, 11:24:04 AM6/21/12
to caelum-...@googlegroups.com
Renan poderia, posta como que funciona?
Será que consigo resolver meu problema com ele?

Em quinta-feira, 21 de junho de 2012 12h11min58s UTC-3, Renan Reis escreveu:
Pessoal, depois de muito trabalhos conseguimos desenvolver um plugin enxuto e que passa em todos os testes do vraptor, sendo 100% compativel com a api.



vou falar com o lucas e o paulo para que coloquemos no rep.

abrasss

Renan Reis

unread,
Jun 21, 2012, 1:20:44 PM6/21/12
to caelum-...@googlegroups.com
pode pegar as classes e colocar no seu projeto, vou gerar um jar e falar com o pessoal a possibilidade de por no rep

abrassss

To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/xV9IDzymbIIJ.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Otávio Garcia

unread,
Jun 21, 2012, 1:25:54 PM6/21/12
to caelum-...@googlegroups.com
Plugin de GSON com package de XStream? Minha sugestão, para organização, seria renomear esse package.

2012/6/21 Renan Reis <renanrei...@gmail.com>

Dev.Softhouse

unread,
Jun 21, 2012, 1:29:53 PM6/21/12
to caelum-...@googlegroups.com
Tem que registrar alguma coisa no Web.xml, como que fica o result com ele, usa normal?

Renan Reis

unread,
Jun 21, 2012, 4:03:13 PM6/21/12
to caelum-...@googlegroups.com
eh 100% compativel, n muda nada na sua aplicação, exceto o json que será retornado. n tem q configurar nada se vc colocar as classes no seu proj. 

qdo for gerado o jar será necessario apenas adicionar as confs do context-param.




To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/oUQGqEqEjGkJ.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Dev.Softhouse

unread,
Jun 22, 2012, 9:47:50 AM6/22/12
to caelum-...@googlegroups.com
Bom dia a todos.

Renan estou tentando testar o plugin, mas estou com um problema.
Como não tem um jar, eu criei a estrutura de pacotes dentro do meu projeto, e coloquei as classes do plugin lá, porém na classe: 
" public class GsonSerializer implements SerializerBuilder "

O eclipse está acusando dois erros, o primeiro é que ele não está reconhecendo o método estático:
import br.com.caelum.vraptor.serialization.xstream.VRaptorClassMapper.isPrimitive;

Sei que esta classe VRaptorClassMapper faz parte do jar do VRaptor, mas estou achando estranho meu jar não ter ela, porque estou  com a versão 3.4.1 (que acredito ser a ultima).

Também, no método serialize dessa mesma classe tem uma linha assim:

Map<String, Object> tree = new HashMap<>();

E o eclipse sugere que fique assim:

Map<String, Object> tree = new HashMap<String, Object>(); 

Dev.Softhouse

unread,
Jun 22, 2012, 9:56:14 AM6/22/12
to caelum-...@googlegroups.com
O primeiro problema era que o método isPrimitive está declarado como protected, então eu não vou conseguir acessá-lo do jeito que eu fiz....

Renan Reis

unread,
Jun 22, 2012, 10:00:35 AM6/22/12
to caelum-...@googlegroups.com
Dev, já corrigi, o problema do diamond operator e refatorei esse método para outra classe, também troquei os pacotes. Pode copiar novamente

Se td der certo hoje gero o jar.

abraços

To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/7MTtcFPhybUJ.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Dev.Softhouse

unread,
Jun 22, 2012, 10:22:26 AM6/22/12
to caelum-...@googlegroups.com
Renan, segue mais testes que fiz:

Quando o serializador encontra um proxy do Hibernate ele lança:
java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?


Quando eu tendo fazer include em algum elemento de um List/Collection (DESDE QUE ESTA LISTA ESTEJA DENTRO DE UM WRAPPER) que não seja tipo primitivo ele lança:

Com Collection:
Field path 'list.escolaridade' doesn't exists in interface java.util.Collection
Com List
Field path 'list.escolaridade' doesn't exists in interface java.util.List

Por exemplo tenho um wrapper:
 wrapper{
  Integer total;
  String message;
  Collection<T> list; // ou List<T> list;
}

Dai nessa Collection/List  eu geralmente tenho alguma classe que tem composição, ou até mesmo outra lista.
então no Controller faço:
result.use(json()).withoutRoot().from(new Wrapper<Pessoa>(page, this.repository.count(), limit, true, "get", entityList)).include("list", "list.escolaridade", "list.telefoneList")
.serialize();

Renan Reis

unread,
Jun 22, 2012, 12:48:35 PM6/22/12
to caelum-...@googlegroups.com
Obrigado pelo feedback.

no caso do proxy é como se tivesse um objeto pessoa sendo passado pro metodo from() e dentro de pessoa tivesse um telefone que é um proxy?

o problema com o wrapper existia antes quando usava a implementação do xstream?

abraços

To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/Ini1BwKMoj8J.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Dev.Softhouse

unread,
Jun 22, 2012, 1:05:59 PM6/22/12
to caelum-...@googlegroups.com
Opa, isso mesmo, o problema do proxy eu acredito que é por causa daquele problema, que já foi muito discutido por aqui.
No caso no XStream nós podemos mexer no CollectionConverter e falar pra ele não serializar se não for Collection, List etc... ou Registrar o próprio converter do Hibernate que tb resolve.

Já o wrapper, sim já existia, o resultado está sendo o mesmo nos dois.

Eu estou insistindo nesse wrapper, pra facilitar o uso do Extjs, porque não basta só devolver um boolean "success" e um int "total" junto com o objeto serializado, as vezes nós temos que devolver muito mais coisas.
E esse "mais coisas" pode ser definido por mim (não tendo um nome pré-definido), e pode ser quantos parâmetros eu quiser.

Renan Reis

unread,
Jun 22, 2012, 5:08:55 PM6/22/12
to caelum-...@googlegroups.com
creio que seja outro problema o proxy, aqui passou nos testes, qual versao do gson vc está usando?

To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/MLNe1YHJAXoJ.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Dev.Softhouse

unread,
Jun 23, 2012, 9:11:51 AM6/23/12
to caelum-...@googlegroups.com
Será que tá faltando mais algum jar? eu coloquei esse aqui: gson-2.2.1.jar

Renan Reis

unread,
Jun 26, 2012, 10:36:43 AM6/26/12
to caelum-...@googlegroups.com
Pessoal,

notei o seguinte problema, quando chamo um objeto "normal" ele serializa tudo corretamente como em: fac.getCurrentSession().get(Task.class, 1L)
porém se chamo um proxy fac.getCurrentSession().load(Task.class, 1L) ele da o problema que o dev citou.

Testei chamando o  new HibernateProxyInitializer().initialize(task); porém mesmo assim nao funcionou. 


Alguem pode dar uma mao? creio que so falta isso...

abraços

To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/ym4Y56d895cJ.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Lucas Cavalcanti

unread,
Jun 26, 2012, 10:42:39 AM6/26/12
to caelum-...@googlegroups.com
esse HibernateProxyInitializer é o do VRaptor?

2012/6/26 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jun 26, 2012, 10:44:35 AM6/26/12
to caelum-...@googlegroups.com
Isso lucas, é o br.com.caelum.vraptor.serialization.HibernateProxyInitializer

Lucas Cavalcanti

unread,
Jun 26, 2012, 10:45:55 AM6/26/12
to caelum-...@googlegroups.com
Quando vc usa o session.load, o hibernate retorna um proxy da entidade...
o que aparece na serialização, depois do initialize?


2012/6/26 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jun 26, 2012, 10:48:42 AM6/26/12
to caelum-...@googlegroups.com
Esse comportamento que achei estranho, em algumas classes serializa tranquilo, em outras:

exception

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: org.hibernate.HibernateException: Javassist Enhancement failed: br.com.fourdata.model.user.User
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

....

root cause

org.hibernate.HibernateException: Javassist Enhancement failed: br.com.fourdata.model.user.User
	org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(JavassistLazyInitializer.java:142)
	org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:71)
	org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:631)
	org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3736)
	org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:360)
	org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:281)
	org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
	org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
	org.hibernate.impl.SessionImpl.load(SessionImpl.java:985)
	org.hibernate.impl.SessionImpl.load(SessionImpl.java:978)
	br.com.fourdata.controller.TaskController.x(TaskController.java:214)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

Lucas Cavalcanti

unread,
Jun 26, 2012, 10:54:23 AM6/26/12
to caelum-...@googlegroups.com
se a classe não tiver um construtor sem argumentos, ou for final, ele não consegue criar o proxy.

em todo caso vc só pode pedir pra inicializar se o cara isProxy

2012/6/26 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jun 26, 2012, 11:36:10 AM6/26/12
to caelum-...@googlegroups.com
ela não é final e tem um construtor ser args:

@SuppressWarnings("unused")
private User() {
this.active = true;
}


porém é private, influencia?

já coloquei pra serializar direto, pq sempre vem proxy (é um caso de teste)

Lucas Cavalcanti

unread,
Jun 26, 2012, 12:12:48 PM6/26/12
to caelum-...@googlegroups.com
não pode ser private, precisa ser ao menos protected... um proxy é uma subclasse, que não tem acesso aos construtores privados da classe mãe.

2012/6/26 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jun 26, 2012, 12:45:34 PM6/26/12
to caelum-...@googlegroups.com
Essa eu não sabia, obrigado Lucas.

Agora funciona, porém ele serializa o objeto vazio, tipo user : { }

no plugin eu já fazia exatamente como vc falou:

serializee.setRootClass(initializer.getActualClass(obj));
if (initializer.isProxy(obj.getClass())) {
initializer.initialize(obj);
}

debuguei e ele realmente chama o initialize. A unica diferença que notei pro original é o registro desse converter.

private void registerProxyInitializer() {
xstream.registerConverter(new ProxyConverter(initializer, xstream));
}

mas ao menos os atributos primitivos do user deveriam vir sem isso correto?

abrassss

Lucas Cavalcanti

unread,
Jun 26, 2012, 12:50:20 PM6/26/12
to caelum-...@googlegroups.com
depende, não sei como o gson trabalha...

ele usa atributos, ou getters?

2012/6/26 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jun 27, 2012, 5:47:18 PM6/27/12
to caelum-...@googlegroups.com
Lucas, desculpe a demora,


ele usa os atributos direto.

Lucas Cavalcanti

unread,
Jun 27, 2012, 7:37:37 PM6/27/12
to caelum-...@googlegroups.com
vc consegue fazer ele acessar os getters?

2012/6/27 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jul 2, 2012, 7:15:35 AM7/2/12
to caelum-...@googlegroups.com
Oi lucas, infelizmente não existe uma forma de fazer ele acessar ele acessar pelos getters. Segundo a documentação:

Using fields vs getters to indicate Json elements

Some Json libraries use the getters of a type to deduce the Json elements. We chose to use all fields (up the inheritance hierarchy) that are not transient, static, or synthetic. We did this because not all classes are written with suitably named getters. Moreover, getXXX or isXXX might be semantic rather than indicating properties. 

However, there are good arguments to support properties as well. We intend to enhance Gson in a latter version to support properties as an alternate mapping for indicating Json fields. For now, Gson is fields-based. 



Por mais que eu não tenha esse proxyConverter, faço a "inicialização" do objeto raiz, então ao menos os atributos deste objeto deveriam vir preenchidos certo?

abs

Lucas Cavalcanti

unread,
Jul 2, 2012, 8:21:36 AM7/2/12
to caelum-...@googlegroups.com
depende de como é feito o proxy...

pode ser que ele tenha como atributo uma instância do objeto real e delegue pra ele todas as chamadas de método.

ou seja, se você não chamar os getters vai estar tudo vazio.
Em todo caso o initialize deveria preencher o objeto


2012/7/2 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jul 2, 2012, 9:55:39 AM7/2/12
to caelum-...@googlegroups.com
Interessante é que passa nos testes do vraptor, porém em um controller simples fiz isso:

User user = (User) fac.getCurrentSession().load(User.class, 1L);
HibernateProxyInitializer pi = new HibernateProxyInitializer();
pi.initialize(user);
result.use(Results.json()).from(user).serialize();


fazendo um debug user continua vindo com seus atributos vazios, porém vem com um atributo handler que é um JavassistLazyInitializer e lá dentro um atributo target, este sim está preenchido.

Então o HibernateProxyInitializer está realmente fazendo seu trabalho correto?

Lucas Cavalcanti

unread,
Jul 2, 2012, 11:03:41 AM7/2/12
to caelum-...@googlegroups.com

Renan Reis

unread,
Jul 4, 2012, 2:47:56 PM7/4/12
to caelum-...@googlegroups.com
Lucas, sua sugestão funcionou perfeitamente! Já implementei aquele adapter de proxy e fiz passar nos testes.


Já commitei pro meu repositório, para a atualização ir para o seu branch eu tenho que fazer algo?

abssss

Lucas Cavalcanti

unread,
Jul 4, 2012, 3:31:02 PM7/4/12
to caelum-...@googlegroups.com
o ideal era ter feito os commits já num fork do vraptor...

tive que fazer umas marotices pra mover os commits de um repo pro outro, vou ver se consigo fazer de novo...

se quiser aplicar vc mesmo os commits, faça um fork do vraptor (se não tiver), faça uma branch a partir da gson:
https://github.com/caelum/vraptor/tree/gson

aplique os commits nela, push e pull request.

2012/7/4 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jul 5, 2012, 12:59:29 PM7/5/12
to caelum-...@googlegroups.com
Beleza Lucas, vou fazer, dxa comigo.

Lucas uma coisa que notei, com o xstream podiamos registrar alguns converters com uma anotação propria.

Com o gson podemos registrar adapters chamando um método em seu builder. Caso o dev, queira registrar um adapter, como fazemos? Vejo as opções:
Criamos um método que deixa ele passar objetos dos adapters que ele quer.
Criamos um método que devolve o builder.
Uma anotação propria.

tem alguma outra sugestão?

abs

Lucas Cavalcanti

unread,
Jul 5, 2012, 2:06:43 PM7/5/12
to caelum-...@googlegroups.com
no XStream a gente simplesmente anota o converter com @Component

pode fazer o mesmo no Gson, só registrar o adapter com @Component.

pra pegar todos os adapters é só receber uma List<Adapter> no construtor

2012/7/5 Renan Reis <renanrei...@gmail.com>

Lucas Cavalcanti

unread,
Jul 6, 2012, 9:18:32 AM7/6/12
to caelum-...@googlegroups.com

Renan Reis

unread,
Jul 6, 2012, 9:23:39 AM7/6/12
to caelum-...@googlegroups.com
no problem, hj já adiciono ele e faço a mudança pra aceitar os adapters marcados com @Component 

Lucas Cavalcanti

unread,
Jul 6, 2012, 9:29:22 AM7/6/12
to caelum-...@googlegroups.com
só lembra de dar crédito pro guilhermegregio ;)

2012/7/6 Renan Reis <renanrei...@gmail.com>

Renan Reis

unread,
Jul 6, 2012, 9:36:47 AM7/6/12
to caelum-...@googlegroups.com
pode ficar tranquilo, ele tá do meu lado x)

Renan Reis

unread,
Jul 25, 2012, 1:58:50 PM7/25/12
to caelum-...@googlegroups.com
Prezados, 

faz um tempo que não movimento por aqui, mas venho com boas novas.

Conseguimos passar em todos os testes, inclusive registrando converters como o Lucas citou acima.

Vou fazer o pull request conforme o Lucas falou.

att

Lucas Cavalcanti

unread,
Jul 25, 2012, 2:01:27 PM7/25/12
to caelum-...@googlegroups.com
=)

2012/7/25 Renan Reis <renanrei...@gmail.com>

Dev.Softhouse

unread,
Jul 27, 2012, 9:54:28 AM7/27/12
to caelum-...@googlegroups.com
Seria bacana se ele consumisse xml/json do jeito que o o iogi converte os inputs em Objetos.

Renan Reis

unread,
Aug 3, 2012, 6:05:41 PM8/3/12
to caelum-...@googlegroups.com
Dev, eu e o @guilhermegregio fizemos a sua solicitação de deixar ele serializar Calendar como o Xstream: "calendar": {"time": 1343313525000,"timezone": "America/Sao_Paulo"}

já está no repositório do git o novo jar.


Lucas, criei um adapter para a classe Calendar e coloquei dentro do jar do plugin. Se o desenvolvedor criar outro adapter pra mesma classe e colocar no projeto, o do desenv sobreescreve o comportamento? Fiz conforme a orientação, anotanto com @component e recebo essa lista como Collection<JsonSerializer<?>> adapters no construtor.

abrasss


To view this discussion on the web visit https://groups.google.com/d/msg/caelum-vraptor/-/_mZOuwPm_ocJ.

To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Dev.Softhouse

unread,
Aug 6, 2012, 7:22:22 PM8/6/12
to caelum-...@googlegroups.com
Opa, parabéns!

Vou testar e dou retorno.

Abraçs;

Renan Reis

unread,
Sep 3, 2012, 12:00:41 PM9/3/12
to caelum-...@googlegroups.com
Pessoal, fiz uma ultima modificação que é permitir a extensão do Gson, implementando suas interfaces e anotando com @Component.
Testado também.

Entao fiz o fork do vraptor para colocar no projeto e poder fazer o pull request, porém não consegui importar o projeto no eclipse.

Alguém pode me auxiliar em como importar?

abrasss

Lucas Cavalcanti

unread,
Sep 3, 2012, 2:09:30 PM9/3/12
to caelum-...@googlegroups.com
vc pode tentar fazer um mvn eclipse:eclipse na raiz do projeto

2012/9/3 Renan Reis <renanrei...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.

Otávio Garcia

unread,
Sep 3, 2012, 10:48:40 PM9/3/12
to caelum-...@googlegroups.com
Ou também pode renomear/copiar o classpath-example existente para .classpath e o project-example para .project.

Abraço

Renan Reis

unread,
Sep 18, 2012, 7:28:13 PM9/18/12
to caelum-...@googlegroups.com
Lucas/Otávio, deu certo pessoal, obrigado.

Consegui montar o projeto direitinho com mvn eclipse:eclipse

Coloquei os pacotes direitinho. Está aqui: https://github.com/renanreismartins/vraptor

Agora é só fazer um pull request? (o branch gson no repositório original ainda não está fazendo build como o master)

Por favor, dê uma olhadinha no pom.xml e veja se declarei a dependência em um bom lugar.

abrass

Lucas Cavalcanti

unread,
Sep 18, 2012, 7:37:14 PM9/18/12
to caelum-...@googlegroups.com

Merge remote-tracking branch 'original/master'

commit d728889adc3ff361ac73715956458b8cf47256a0 2 parents 8d2eaab24a + 781f0b1991
renanreismartins authored 2 hours ago
This diff is too big to show! We're showing status information only.
Showing 1,286 changed files with 2,055 additions and 206,566 deletions.


206,566 deletions. Daora :P

Faz o pull request sim, por favor =)


2012/9/18 Renan Reis <renanrei...@gmail.com>

--

Renan Reis

unread,
Sep 19, 2012, 8:41:49 AM9/19/12
to caelum-...@googlegroups.com
Oi Lucas,

eu fiz o fork, importei só o core, dei umas cabeçadas com os branches, desculpa. Acho que deu essas deleções pq não importei os outros projetos. Quer eu importe ou posso fazer o merge como vc falou?

abrasss

Lucas Cavalcanti

unread,
Sep 19, 2012, 9:56:48 AM9/19/12
to caelum-...@googlegroups.com
Renan, faça o seguinte por favor, pra facilitar o merge:

- desfaça as alterações do seu branch:
(supondo que o remote do vraptor original se chama original)
git fetch original
git checkout master
git reset --hard original/master

- aplique os commits com as suas classes:
git cherry-pick 74285e3
git cherry-pick 0410345c3

- resete o seu fork pra esse master:
(supondo que o remote do seu fork se chama origin)
git push --force origin master

Assim o pull request já ficará atualizado.

Abraços

--

Renan Reis

unread,
Sep 20, 2012, 5:35:09 PM9/20/12
to caelum-...@googlegroups.com
Feito pessoal.

Qualquer coisa entrem em contato.

abrasss

2012/9/19 Lucas Cavalcanti <lucasm...@gmail.com>
Reply all
Reply to author
Forward
0 new messages