| Autor |
Mensagem |
|
|
Bacana garcia, mas só lembrando que você com unmodifiableXX pode mudar os objetos NA instância da lista de qualquer forma. O que você não pode é, simplesmente, alterar a instância DA PRÓPRIA lista.
Ou seja, não vejo qualquer benefício prático neste caso.
Lucas,
Chegando em casa vou implementar e dar um pull.
|
 |
|
|
Vocês não acham que os erros deveriam ser conhecidos no Controller?
Acho natural usar o padrão (colocar o erros no request), porém, por default, não vejo problemas em disponibilizá-los no Controller também.
E se o cara quiser enviar as mensagens em outra formatação, não é normal? Neste caso o VRaptor não estaria tolhendo demais o programador para utilizar o padrão dele ? Enviá-la de outra forma demanda, desnecessariamente, o trabalho de sobrescrever o framework.
O que vocês acham?
|
 |
|
|
@garcia-jj, Lucas
O aplicativo cliente recebe tudo em JSON, inclusive mensagens de erro, ao invés de HTTP CODE e/ou, porventura, uma mensagem no corpo.
O atalho do VRaptor produz um HTTP CODE 400, certo? Não serve para mim. Nem sempre podemos fazer algo mais próximo de Restful.
Trata-se de um aplicativo feito em Flash que consome JSON e envia JSON. Ele será o único cliente, então não posso me prender a diversas good practices de serviços web, REST ou não, pois a plataforma da Adobe é bem limitada e cheia de problemas.
Neste caso específico, ao receber um code 400 ele simplesmente retorna um IOError e não tem como capturar a resposta, quiçá, enviada pelo serviço.
Como é muito simples a solução do Lucas, vou utilizá-la, pois assim meu cliente vai ganhar dinheiro e, da maneira mais responsável possível, irei resolver o problema dele.
Obrigado pessoal!
|
 |
|
|
garcia-jj wrote:Você tem acesso a ele pelo JSP via atributo errors. Você precisa dele no controller?
Isso, eu preciso no Controller. Meu cliente é um Aplicativo que consome JSON. (de antemão aviso que o Deserializer default do VRaptor não funciona pra mim, eu estou usando o GSon)
O ponto desta thread não é a solução em si, mas o por quê não disponibilizá-lo na interface Validator.
Um cara que valida algo, por definição, deve saber informar os erros encontrados.
|
 |
|
|
Seria o óbvio ululante, garcia.
Mas br.com.caelum.vraptor.Validator não tem o método getErrors()
Estou usando a versão 3.3.1
Obg
|
 |
|
|
Simples garcia, a interface não tem este método.
AbstractValidator marca ele como protegido e é usado por DefaultValidator, este sim contém o método público.
Minha questão é:
Porque este método não é declarado na interface? Eu teria que declarar, no controller, a implementação diretamente (ou fazer CAST), para ter acesso a este método.
|
 |
|
|
Ola
Não percebo um clara justificativa para que não possamos recuperar os erros (Message) ocorridos quando usamos alguma implementação da JSR de Bean Validator através do VRaptor, leia-se:
Eu tenho realmente que criar um Interceptor para pegar o parâmetro "errors" (próprio do VRaptor) existente pós validação?
Porque não disponibilizá-las publicamente ?
|
 |
|
|
Me identifico bastante com esta discussão.
Atualmente estou trabalhando em um projeto de enorme concorrência e consumo de dados para um jogo, dos grandes.
Quanto entrei na empresa, o ex "líder técnico" havia feito uma implementação em Ruby (não finalizada) com Mongo DB, com argumentos mais pelo hype e pelo gosto pessoal do que coerência técnica.
A maturidade da JVM é algo inquestionável frente a outras VMs, inclusive a do Ruby, seja ela qual for. Indo além, a maturidade de APIs para o Membase (leia-se, basicamente Memcached persistido) também não era bacana, entre outras soluções já maduras, há anos, para o Java.
Minha proposta foi parar de brigar com a solução, que na verdade era nosso maior problema, e jogar fora tudo feito em Ruby e usar Java puro.
Refiro-me, acrescentando a discussão, que o Java tem soluções (libs, etc) bem mais maduras e estáveis que as providas pelo Ruby, em muitos casos.
Eu adoro programar em Ruby, porém é necessário colocar de lado predileções e decidir com responsabilidade o que você vai sugerir como solução para os projetos que você venha a participar.
Por fim, digo que rendeu muita conversa até resolverem jogar no lixo o que estava pronto, ato este que, por definição, não soa bem para nenhum gerente ou padrinho de projeto, no nosso caso. Hoje estamos muito bem, mais rápidos e tranquilos usando Java puro.
|
 |
|
|
garcia-jj wrote:Você mapeou o package no web.xml? O VRaptor só faz scan automatico para classes no WEB-INF/classes. Para classes dentro de um jar é necessário declarar o pacote no web.xml.
Esta classe é modelo e não usa anotação nenhuma, seja do VRaptor ou dos steriotypes do Spring.
Por coinscidência, implementei um serializer e marquei como @Deserializes. Ele não detecta esse cara, mesmo mapeando no web.xml um parâmetro de contexto com o nome br.com.caelum.vraptor.packages e adicionando o pacote do meu tipo JsonDeserializer.
|
 |
|
|
Claro Lucas.
A classe Enum está em um JAR-core, que por usa vez está no WEB-INF/libs da aplicação web que utiliza a tal inner enum.
As requisições chegam via JSON de um swf e minha resposta é dada no mesmo formato.
Esta é classe de domínio, argumento do método no Controller
Estou testando via cURL:
curl -d ... "xxx.type=SUBWAY&xxx.description=foo" http://localhost:8080/project/xxx/save
Erro:
12:15:01,077 DEBUG [ParametersInstantiatorInterceptor] There are conversion errors: [ValidationMessage{category=type, message=???is_not_a_valid_enum_value???, parameters=null}]
|
 |
|
|
|
Oi Lucas, está sim.
|
 |
|
|
Ola
O Bootstrap do VRaptor não consegue encontrar inner Enums ? Quando coloco-a em um arquivo separado tudo funciona normalmente.
|
 |
|
|
É verdade garcia-jj.
Já submeti lá.
|
 |
|
|
Criei o mock para JSR303, que foi bem simples.
Porém este depende do jar validation-api-1.0.0.GA.jar. Vale a pena fazer um pull request?
|
 |
|
|
garcia-jj wrote:O HV4 não depende do Hibernate core. Eu tenho usado o HV4 com sucesso em um Glassfish com Eclipselink normalmente.
Acho que essa Exception deve ser de outra coisa.
Não, o HV4 não tem. Mas o HV 3 tem.
garcia-jj vou dar uma olhada nas outras implementações. Se não forem tão boas vou escrever em casa o Mock para HV 4 no VRaptor.
Obrigado!
|
 |
|
|