Skip to content

Instantly share code, notes, and snippets.

@cmilfont
Created May 31, 2012 21:10
Show Gist options
  • Save cmilfont/2846320 to your computer and use it in GitHub Desktop.
Save cmilfont/2846320 to your computer and use it in GitHub Desktop.
não quero escrever controllers
package org.javace.oportunidades;
/* pra que? */
import static br.com.caelum.vraptor.view.Results.json;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
/* pra que? */
import br.com.caelum.vraptor.Consumes;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
/* pra que? */
@Resource
public class IndicarOportunidade {
private Session session;
/* pra que? */
private final Result result;
private ProdutosJaIndicados produtosJaIndicados;
public IndicarOportunidade(ProdutosJaIndicados produtosJaIndicados, Session session, /* pra que? */ Result result) {
this.produtosJaIndicados = produtosJaIndicados;
this.session = session;
/* pra que? */
this.result = result;
}
/* pra que? */
@Post
@Consumes
public List<Oportunidade> comoColaborador(Indicacao indicacao) {
List<Oportunidade> oportunidades = new ArrayList<Oportunidade>();
// gera essa lista, mas...
/* pra que? */
this.result.use(json()).withoutRoot().from(oportunidades).serialize();
return oportunidades;
}
}
@andersonfraga
Copy link

Bacana a discussão.
Nunca gostei dessa idéia de misturar responsabilidades em um controller. Acredito que a unica 'função' dele é exatamente repassar o conteúdo do modelo para a view/presenter e, principalmente, tratar a requisição/resposta, com o tipo de dado correto e com os cabeçalhos bem definidos.

A um tempo atrás, aqui na empresa, procuravamos uma solução que nos agradasse em termos de controllers simples e diretos. Infelizmente, não localizamos alternativas viáveis. Ou seja, tivemos que 'reinventar' a roda.

Minha solução (que não foi em Java), seria BEM +- assim:
https://gist.github.com/2875251

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment