[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Integração com o Hibernate Validator  XML
Forum Index -> Comentários Gerais Go to Page: 1, 2 Next 
Author Message
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

Agora que o Hibernate Validator virou um top project, seria legal fazer uma integração com ele.

http://validator.hibernate.org
http://www.hibernate.org/hib_docs/validator/reference/en/html

Tipo, usar a validação dos beans automaticamente quando der o comando input.getObject(), ao inves de ter q escrever uma validação no action...

Pode ser uma opção mais simples (interessante)...
E não depende mais de outras coisas do Hibernate. Só do projeto Hibernate Validator.

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
lcmetzger



Joined: 24/10/2006 14:29:00
Messages: 81
Offline



Isto não criaria dependência com o Hibernate?


Luiz Carlos Metzger
Blumenau - SC
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

Hibernate Validator != Hibernate

Hibernate Validator agora é um projeto qualquer como bean utils, log4j ou etc...

Se você pode usar o log4j no seu projeto, quer dizer que está dependente? Não... Vc vai escolher se quer usar ou não...

Mesma coisa... o input.getObject() pode ver se tem annotation no Bean, se tiver valida tentando usar o Hibernate Validator que teria q estar no classpath...
Se não tiver, passa direto e não valida nesse ponto.

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
velo


[Avatar]

Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline

Eu axo q botar essa dependencia no getObject é dar um tiro no pé!!!

Mas, como tudo na vida tem um mas, mas....
Eu axo q dava pra criar um validador que faça isso. Mas nada além.


VELO

_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer
[Email] [MSN]
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

blz... ve ai então...

mas só lembrando que não precisa ter dependência
dependência pra mim é algo que precisa estar lá para funcionar
o input.getObject() vai continuar funcionando sem o Hibernate Validator

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
lcmetzger



Joined: 24/10/2006 14:29:00
Messages: 81
Offline

bruno.braga wrote:
Hibernate Validator != Hibernate

Hibernate Validator agora é um projeto qualquer como bean utils, log4j ou etc...

Se você pode usar o log4j no seu projeto, quer dizer que está dependente? Não... Vc vai escolher se quer usar ou não...

Mesma coisa... o input.getObject() pode ver se tem annotation no Bean, se tiver valida tentando usar o Hibernate Validator que teria q estar no classpath...
Se não tiver, passa direto e não valida nesse ponto. 




Tente anotar o pojo com @NotNull, a classe org.hibernate.validator.NotNull terá que ser importada.

Pelo que li nos links que vc postou, o HibernateValidator não utiliza a anotação @Column(nullable = false) do JPA para criar uma constraint.


Luiz Carlos Metzger
Blumenau - SC
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

Cara, tu não entendeu...

Se você colocar @NotNull, é claro que o seu projeto vai precisar do Hibernate Validator. O seu projeto. Não o mentawai.

Se o mentawai ver que você colocou um @NotNull no teu projeto, ele vai chamar o Hibernate Validator via reflection ou outra forma (tem outras).

Se você não colocou o @NotNull, o mentawai vai continuar como sempre foi, e fazer as validações no action (se tiver).

O mentawai não precisa do jar do Hibernate Validator. Quem precisa é o seu projeto se você quiser usar.

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
velo


[Avatar]

Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline

Como o mentawai vai checar de @NotNull sem dependencia? hehehehhe

E não me fala em reflexão!


VELO

_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer
[Email] [MSN]
lcmetzger



Joined: 24/10/2006 14:29:00
Messages: 81
Offline

Entendi sim!

Talvez não tenha me expressado corretamente.
Você tem razão quando diz que a dependência será da minha aplicação.

O que eu quiz dizer é por que o HibernateValidator não utiliza as especificações do JPA pra fazer a validação, e sim suas próprias anotações!


Luiz Carlos Metzger
Blumenau - SC
velo


[Avatar]

Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline

Na real, JPA só faz validação de banco...

O hibernate oferece bem mais coisa.


VELO

_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer
[Email] [MSN]
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

velo wrote:
Como o mentawai vai checar de @NotNull sem dependencia? hehehehhe

E não me fala em reflexão!


VELO 


Porque não?
Pegando todas as annotations dos atributos sem dependência:
Code:
 	    Class c = Carro.class;
 
 	    Field[] fields = c.getDeclaredFields();
 
 	    for (Field field : fields) {
 	    	Annotation[] annotations = field.getAnnotations();
 		    for (Annotation ann : annotations) {
 		    	System.out.println(ann.annotationType().getName());
 	    	}
 	    } 
 


Essa é a opção do reflection (que alias já é usado em vários lugares do mentawai, inclusive para popular o objeto do getObject).

Uma outra opção é criar um mentawai-hvalidator.jar, com classes que tem dependencia com o hibernate validator, e se esse jar tivesse no classpath, chamar ele... Mas eu prefiro o reflection, que como eu disse já é usado no getObject, é só colocar umas verificações a mais.

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
velo


[Avatar]

Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline

PQ se eh pra fazer com reflexão eu paro de trabalhar com java e vou axar uma linguagem não tipada pra ficar tomando erro em runtime.

VELO

_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer
[Email] [MSN]
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

velo wrote:
PQ se eh pra fazer com reflexão eu paro de trabalhar com java e vou axar uma linguagem não tipada pra ficar tomando erro em runtime.

VELO 


Então pode parar, pq o mentawai já tem vários lugares com reflection...
Acho que os argumentos não são validos, pq nesse caso é impossível dar erro de runtime.

Esse reflection é só para verificar se tem annotation do tipo org.hibernate.validator. Se tiver ou não tiver, não vai dar erro nenhum. É só uma verificação.

Dai o segundo passo é: tem a annotation? Então passa a bola para o Hibernate Validator. E mais uma vez não tem como dar erro, pq se o cara tem uma annotation dessa (org.hibernate.validator) na classe dele é porque esse jar já está no classpath.
É impossível o cara conseguir ter um @NotNull sem ter o jar no projeto dele.

Então pronto, vc criou uma integração com o Hibernate Validator sem dependência..., sem erros de runtime, e no input.getObject() e tudo...

Mais alguma razão VELO? Ta resistente atoa hein... Bom avaliem ai..., se acharem bobeira deixa quieto...

Flw!

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
velo


[Avatar]

Joined: 16/02/2006 13:33:54
Messages: 1197
Location: Jaraguá do Sul - SC
Offline

Tem no mentawai?! Legal, mas não que eu tenha feito =D
E deve ter em locais que não tem alternativa ou faz com reflexão ou não faz, o que não é o caso.


VELO

_____________________________________
Mentawai Developer
"When the only tool you have is a hammer, everything looks like a nail"
http://en.wikipedia.org/wiki/Golden_hammer
[Email] [MSN]
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

Tem, tem muitos lugares com reflection no menta...
Inclusive o getObject como eu falei...

Reflection nesse caso é alternativa para não ter dependência. O que é válido.

Não entendi... Você não quer colocar String dependency, mas quer criar String dependency, porque vários lugares no menta obriga a usar String para controlar o que fazer (String dependency). Tipo retorno dos métodos das action que é String, configuração do ApplicationManager que tem um monte de String... Então estranho o comentário. Incoerente na verdade.

O getObject() foi um exemplo, mas é a mesma coisa do VO Filter.
E não quebra nada. Se não entendeu, isso é opcional.

Exato, se for fazer tem que fazer direito, a começar pelas avaliações e comentários. Criticar o que o menta já usa não parece um argumento válido.
Se for fazer, tu tem que saber ouvir a sugestão, levar para a tua equipe e ter uma resposta da equipe... sem opiniões pessoais sobre reflection.

Mais uma vez, isso é uma sugestão (que eu poderia ter feito ou não). Avaliem com calma e vejam os pontos positivos e negativos, sem opiniões fora de hora ou precipitadas.

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
 
Forum Index -> Comentários Gerais Go to Page: 1, 2 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team