Lidando com Java
Obsoleto: Do Struts 1.0
ao CDI
Java na Crista da Onda
Lidando com Java
Obsoleto: Do Struts 1.0
ao VRaptor com CDI
Java na Crista da Onda
David Robert
davidrobert@gmail.com
linkedin.com/in/davidrobert
Lidando com Java
Obsoleto
Struts & CDI
❏
❏
❏
❏
❏
❏
➢
➢
➢
➢
➢
➢
public class ProdutoDao {
public void salvar(Produto produto) {
entityManager.persist(produto);
}
}
public class ProdutoDao {
private EntityManager entityManager;
public ProdutoDao(EntityManager em) {
this.entityManager = ...
public class ProdutoDao {
private EntityManager entityManager;
// recebe a dependência pronta
public ProdutoDao(EntityMana...
public class ProdutoDao {
private EntityManager entityManager;
public ProdutoDao(EntityManager em) {
this.entityManager = ...
public class ProdutoDao {
private EntityManager entityManager;
@Inject
public ProdutoDao(EntityManager em) {
this.entityMa...
public class ProdutoDao {
@Inject
private EntityManager entityManager;
public void salvar(Produto produto) {
entityManager...
public static ConnectionContainer
putContainerInRequest(HttpServletRequest
request) {
ConnectionContainer container =
new ...
public static Connection
getConnectionFromRequest(HttpServletRequest
request) {
ConnectionContainer con =
(ConnectionConta...
public class ConnectionContainer {
private Connection connection;
public Connection getConnection() {
if (connection == nu...
public Connection getCon(HttpServletRequest
request) throws SQLException {
return getConnectionFromRequest(request);
}
@RequestScoped
public Connection getCon(HttpServletRequest
request) throws SQLException {
return getConnectionFromRequest(...
@Produces
@RequestScoped
public Connection getCon(HttpServletRequest
request) throws SQLException {
return getConnectionFr...
public class JPAUtil {
@Produces @ApplicationScoped
public EntityManagerFactory criaFactory() {
return
Persistence.createE...
<filter>
<init-param>
<param-name>restrictedUrl</param-name>
<param-value>
/sellerOrder.do, /buyerOrder.do,
/clientCategor...
<init-param>
<param-name>restrictedCommands</param-name>
<param-value>
showUserPasswordForm, showOrderHistoryForm,
showUse...
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface BlockUnloggedUsers {...
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface BlockUnloggedUsers {...
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface BlockUnloggedUsers {...
public class BlockedActionsTest {
private Class<?>[] blackListed =
new Class<?>[]{
BuyerOrderAction.class,
ClientCreateAct...
...
Method[] actionMethods =
blockedAction.getMethods();
for (Method method : actionMethods) {
assertNull(
method.getAnnot...
public void
loginIntoSession(LoginAuthentication
loginAuthentication, HttpServletRequest
request, HttpServletResponse resp...
public void
loginIntoSession(LoginAuthentication
loginAuthentication, HttpServletRequest
request, HttpServletResponse resp...
@Inject
private Event<SessionLogin> sessionLoginEvent;
public void algumMetodoInteressado(
@Observers SessionLogin session...
JSF
Play!
Spring
VRaptor
???
Quão fácil é trocar um framework?
❏ Desenvolvedores não envolvidos
no processo?
Quão fácil é trocar um framework?
❏ Desenvolvedores não envolvidos
no processo?
❏ Entregas de produto?
Quão fácil é trocar um framework?
❏ Desenvolvedores não envolvidos
no processo?
❏ Entregas de produto?
❏ Ferias coletivas?
if (analyser.isRouteToVRaptor((HttpServletRequest) req)) {
super.doFilter(req, res, chain);
} else {
Elo7MutableRequest mu...
Obrigado!
David Robert
@while42
❏
❏
❏
❏
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Upcoming SlideShare
Loading in...5
×

Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014

732
-1

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
732
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014

  1. 1. Lidando com Java Obsoleto: Do Struts 1.0 ao CDI Java na Crista da Onda
  2. 2. Lidando com Java Obsoleto: Do Struts 1.0 ao VRaptor com CDI Java na Crista da Onda
  3. 3. David Robert davidrobert@gmail.com linkedin.com/in/davidrobert
  4. 4. Lidando com Java Obsoleto Struts & CDI
  5. 5. ❏ ❏ ❏
  6. 6. ❏ ❏ ❏
  7. 7.
  8. 8. ➢ ➢
  9. 9. ➢ ➢ ➢
  10. 10. public class ProdutoDao { public void salvar(Produto produto) { entityManager.persist(produto); } }
  11. 11. public class ProdutoDao { private EntityManager entityManager; public ProdutoDao(EntityManager em) { this.entityManager = em; } public void salvar(Produto produto) { entityManager.persist(produto); } }
  12. 12. public class ProdutoDao { private EntityManager entityManager; // recebe a dependência pronta public ProdutoDao(EntityManager em) { this.entityManager = em; } // usa a dependência public void salvar(Produto produto) { entityManager.persist(produto); } }
  13. 13. public class ProdutoDao { private EntityManager entityManager; public ProdutoDao(EntityManager em) { this.entityManager = em; } public void salvar(Produto produto) { entityManager.persist(produto); } }
  14. 14. public class ProdutoDao { private EntityManager entityManager; @Inject public ProdutoDao(EntityManager em) { this.entityManager = em; } public void salvar(Produto produto) { entityManager.persist(produto); } }
  15. 15. public class ProdutoDao { @Inject private EntityManager entityManager; public void salvar(Produto produto) { entityManager.persist(produto); } }
  16. 16. public static ConnectionContainer putContainerInRequest(HttpServletRequest request) { ConnectionContainer container = new ConnectionContainer(); request.setAttribute(ConnectionFactory. OPEN_IN_VIEW_CONNECTION_CONTAINER, container); return container; }
  17. 17. public static Connection getConnectionFromRequest(HttpServletRequest request) { ConnectionContainer con = (ConnectionContainer)request.getAttribute( OPEN_IN_VIEW_CONNECTION_CONTAINER); return con.getConnection(); }
  18. 18. public class ConnectionContainer { private Connection connection; public Connection getConnection() { if (connection == null) { try { connection = ConnectionFactory.createNewConnection(); } catch (SQLException e) { logError("Error blah", e); } } return connection; } }
  19. 19. public Connection getCon(HttpServletRequest request) throws SQLException { return getConnectionFromRequest(request); }
  20. 20. @RequestScoped public Connection getCon(HttpServletRequest request) throws SQLException { return getConnectionFromRequest(request); }
  21. 21. @Produces @RequestScoped public Connection getCon(HttpServletRequest request) throws SQLException { return getConnectionFromRequest(request); }
  22. 22. public class JPAUtil { @Produces @ApplicationScoped public EntityManagerFactory criaFactory() { return Persistence.createEntityManagerFactory("jpa"); } @Produces @RequestScoped public EntityManager criaEM(EntityManagerFactory factory){ return factory.createEntityManager(); } }
  23. 23. <filter> <init-param> <param-name>restrictedUrl</param-name> <param-value> /sellerOrder.do, /buyerOrder.do, /clientCategory.do, /clientCreate.do, /clientEdit.do, /clientSearch.do, /productCreate.do, ... </param-value> </init-param>
  24. 24. <init-param> <param-name>restrictedCommands</param-name> <param-value> showUserPasswordForm, showOrderHistoryForm, showUserFeedbackEditForm, showUserShopForm, showUserBannerForm, showUserPictureForm, showUserContactInfoForm, ... </param-value> </init-param> </filter>
  25. 25. @InterceptorBinding @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public @interface BlockUnloggedUsers { }
  26. 26. @InterceptorBinding @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public @interface BlockUnloggedUsers { } @BlockUnloggedUsers public class ProductSearchAction { /* ... */ }
  27. 27. @InterceptorBinding @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public @interface BlockUnloggedUsers { } @BlockUnloggedUsers public class ProductSearchAction { /* ... */ }
  28. 28. public class BlockedActionsTest { private Class<?>[] blackListed = new Class<?>[]{ BuyerOrderAction.class, ClientCreateAction.class, ... }; @Test public void shouldVerifyBlackListedActions(){ for (Class<?> blockedAction : blackListed){ assertNotNull( blockedAction.getAnnotation( BlockUnloggedUsers.class)); ...
  29. 29. ... Method[] actionMethods = blockedAction.getMethods(); for (Method method : actionMethods) { assertNull( method.getAnnotation( UnloggedUsers.class)); } }
  30. 30. public void loginIntoSession(LoginAuthentication loginAuthentication, HttpServletRequest request, HttpServletResponse response) { UserInfo loginUser = login.login(loginAuthentication); SessionUtils.putIntoSession(request,loginUser); SessionUtils.setLoggedUser(request, loginUser); // + Código para merge dos carrinhos // + Código de traqueamento // = Código Monstro! }
  31. 31. public void loginIntoSession(LoginAuthentication loginAuthentication, HttpServletRequest request, HttpServletResponse response) { UserInfo loginUser = login.login(loginAuthentication); SessionUtils.putIntoSession(request,loginUser); SessionUtils.setLoggedUser(request, loginUser); sessionLoginEvent.fire( new SessionLogin( loginUser, request, response)); }
  32. 32. @Inject private Event<SessionLogin> sessionLoginEvent; public void algumMetodoInteressado( @Observers SessionLogin sessionLogin) { // ... }
  33. 33. JSF Play! Spring VRaptor ???
  34. 34. Quão fácil é trocar um framework? ❏ Desenvolvedores não envolvidos no processo?
  35. 35. Quão fácil é trocar um framework? ❏ Desenvolvedores não envolvidos no processo? ❏ Entregas de produto?
  36. 36. Quão fácil é trocar um framework? ❏ Desenvolvedores não envolvidos no processo? ❏ Entregas de produto? ❏ Ferias coletivas?
  37. 37. if (analyser.isRouteToVRaptor((HttpServletRequest) req)) { super.doFilter(req, res, chain); } else { Elo7MutableRequest mutableRequest = new Elo7MutableRequest((HttpServletRequest) req); Elo7MutableResponse mutableResponse = new Elo7MutableResponse((HttpServletResponse) res); StrutsRequestStarted request = new StrutsRequestStarted(chain, mutableRequest, mutableResponse); strutsRequestStartedEvent.fire(request); chain.doFilter(req, res); }
  38. 38. Obrigado! David Robert @while42
  39. 39. ❏ ❏ ❏ ❏
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×