| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2007 21:27:13
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 06:22:34
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 07:18:26
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 07:43:40
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 07:51:02
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 07:52:02
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 07:57:59
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 07:59:54
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 08:04:16
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 08:12:18
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 08:28:10
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 08:29:49
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 08:42:57
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 09:01:01
|
velo
![[Avatar]](/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 09:14:36
|
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 |
|
|
 |
|
|