If you can't read please download the document
Upload
renan-montenegro
View
732
Download
0
Embed Size (px)
Citation preview
VRaptor 4
Desenvolvedor Java h mais de 4 anos, commiter no VRaptor 4 e membro ativo da lista de discusso oficial do VRaptor. Entusiasta SEO(Search Engine Optimization).
@renanigt
renanigt
Renan Montenegro
Desenvolvedor Java h 6 anos, graduado em Cincia da Computao, ps graduado em Arquitetura Java, ambas pela Unifor, Coordenador da comunidade JavaCE e Viciado em Testes automatizados.
@matheusmoura
matheusfechine
Matheus Fechine
O que ?
MVC
MVC
Modelo
MVC
Viso
MVC
Controller
Por qu ?
CDI
Extensvel
Cdigo Fluente
Testvel
Servio REST
Controller
@Controllerpublic class UsuarioController {
}
@Controllerpublic class UsuarioController {
public void index() {
}
}
@Controllerpublic class UsuarioController {
public void index() {
}
}
@Controllerpublic class UsuarioController {
public void index() {
}
}
/usuario/index
@Controllerpublic class UsuarioController {
@Path("/inicio")public void index() {
}
}
@Controllerpublic class UsuarioController {
@Path("/inicio")public void index() {
}
}
@Controllerpublic class UsuarioController {
@Path("/inicio")public void index() {
}
}
/inicio
View
@Controllerpublic class UsuarioController {
@Injectprivate Result result;
public void index() {result.include("mensagem", "Pgina Inicial !");}
}
@Controllerpublic class UsuarioController {
@Injectprivate Result result;
public void index() {result.include("mensagem", "Pgina Inicial !");}
}
CDI
@Controllerpublic class UsuarioController {
@Injectprivate Result result;
public void index() {result.include("mensagem", "Pgina Inicial !");}
}
@Controllerpublic class UsuarioController {
@Injectprivate Result result;
public void index() {result.include("mensagem", "Pgina Inicial !");}
}
${mensagem}
index.jsp
CDI@Controllerpublic class UsuarioController {
private Result result;
@Injectpublic UsuarioController(Result result) {this.result = result;}
public UsuarioController() {}
public void index() {result.include("mensagem", "Pgina Inicial !");}
}
@Controllerpublic class UsuarioController {
private Result result;
@Injectpublic UsuarioController(Result result) {this.result = result;}
public UsuarioController() {}
public void index() {result.include("mensagem", "Pgina Inicial !");}
}
/** * @deprecated CDI eyes only. */protected UsuarioController() {this(null);}
Componentes
@RequestScopedpublic class UsuarioDao {
public Usuario pesquisaUsuario(Long id) {//carrega Usurio do banco}
}
@Controllerpublic class UsuarioController {
@Injectprivate UsuarioDao dao;
public void pesquisarUsuario(Long id) {Usuario usuario = dao.pesquisaUsuario(id);}
}
RedirecionamentoeForward
@Postpublic void adiciona(Usuario usuario) {result.redirectTo(this).index();}
Redirect
@Postpublic void adiciona(Usuario usuario) {result.forwardTo(this).index();}
Forward
Formulrio
@Postpublic void adiciona(Usuario usuario) {
}
@Postpublic void adiciona(Usuario usuario) {
}
public class Usuario {
private String login;private String senha;
//getters e setters
}
Validao
@Controllerpublic class UsuarioController {
@Injectprivate Validator validator;
}
SimpleMessage message = new SimpleMessage("Login", "Login no preenchido");
validator.addIf(usuario.getLogin() == null, message);
validator.onErrorRedirectTo(this).index();
@Postpublic void adiciona(Usuario usuario) {SimpleMessage message = new SimpleMessage("Login", "Login no preenchido");validator.addIf(usuario.getLogin() == null, message);validator.onErrorRedirectTo(this).index();}
REST
@Get@Path("/usuario/{id}")public void visualiza(Long id) {
}
@Get("/usuario/{id}")public void visualiza(Long id) {
}
@Post("/usuario")public void adiciona(Usuario usuario) {
}
@Put("/usuario")public void atualiza(Usuario usuario) {
}
@Delete("/usuario")public void remove(Usuario usuario) {
}
Serializao
public void carregaJson(Usuario usuario) { result.use(Results.json()) .from(usuario) .serialize();}
public void carregaXml(Usuario usuario) { result.use(Results.xml()) .from(usuario) .serialize();}
Interceptors
@Interceptspublic class LoginInterceptor {
}
@Interceptspublic class LoginInterceptor {
@BeforeCall public void before() {
}
@AfterCall public void after() {
} @Accepts public boolean accepts(ControllerMethod method) { return method.containsAnnotation(Logado.class); }
}
@Interceptspublic class LoginInterceptor {
@BeforeCall public void before() {
}
@AfterCall public void after() {
} @Accepts public boolean accepts(ControllerMethod method) { return method.containsAnnotation(Logado.class); }
}
@Interceptspublic class LoginInterceptor {
@BeforeCall public void before() {
}
@AfterCall public void after() {
} @Accepts public boolean accepts(ControllerMethod method) { return method.containsAnnotation(Logado.class); }
}
@Interceptspublic class LoginInterceptor {
@BeforeCall public void before() {
}
@AfterCall public void after() {
} @Accepts public boolean accepts(ControllerMethod method) { return method.containsAnnotation(Logado.class); }
}
@AroundCallpublic void intercept(SimpleInterceptorStack stack) { System.out.println("Antes da lgica.");
stack.next(); // continua a execuo System.out.println("Depois da lgica.");}
Testes Unitrios
@Controllerpublic class UsuarioController {
private Result result;
@Injectpublic UsuarioController(Result result) {this.result = result;}
protected UsuarioController() {this(null);}
public void index() {result.include("mensagem", "Pgina Inicial !");}
}
public class UsuarioControllerTest {
private MockResult result;private UsuarioController controller;
@Beforepublic void setUp() {result = new MockResult();controller = new UsuarioController(result);}
@Testpublic void deveriaConterMensagemDeSucesso() {controller.index();
Assert.assertTrue(result.included().containsKey("mensagem"));Assert.assertEquals("Pgina Inicial !", result.included("mensagem"));}
}
public class UsuarioControllerTest {
private MockResult result;private UsuarioController controller;
@Beforepublic void setUp() {result = new MockResult();controller = new UsuarioController(result);}
@Testpublic void deveriaConterMensagemDeSucesso() {controller.index();
Assert.assertTrue(result.included().containsKey("mensagem"));Assert.assertEquals("Pgina Inicial !", result.included("mensagem"));}
}
public class UsuarioControllerTest {
private MockResult result;private UsuarioController controller;
@Beforepublic void setUp() {result = new MockResult();controller = new UsuarioController(result);}
@Testpublic void deveriaConterMensagemDeSucesso() {controller.index();
Assert.assertTrue(result.included().containsKey("mensagem"));Assert.assertEquals("Pgina Inicial !", result.included("mensagem"));}
}
Plugins
vraptor-brutauth
vraptor-jpa
vraptor-hibernate
vraptor-jasperreport
Mais VRaptor 4
www.vraptor.com.br
https://groups.google.com/group/caelum-vraptor
https://github.com/caelum/vraptor4
Dvidas ?