A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java Pet Store 2.0 Reference Application Guilherme Oliveira (gkmo)

Apresentações semelhantes


Apresentação em tema: "Java Pet Store 2.0 Reference Application Guilherme Oliveira (gkmo)"— Transcrição da apresentação:

1 Java Pet Store 2.0 Reference Application Guilherme Oliveira (gkmo)

2 O projeto Desenvolvida pelo programa Java BluePrints da Sun Microsystems. Desenvolvida para ilustrar como J2EE 5 pode ser usado para desenvover aplicações Web 2.0

3 O projeto

4 Pontos importantes: –Componentes JSF “AJAX-enabled” –Java Persistence APIs –Aplica o MVC e outros padrões de projeto –Mashups como Google Maps e PayPal –Usa um feed RSS –E um bocado de outras coisas…

5 Métricas Total de Linhas de Código –3807 Total de Classes –40 Total de Pacotes –8 * Páginas HTML/JSF/JSP não foram incluídas

6 Concerns Concerns identificados –Maintain pet (858 LOC) –Search for pets (1245 LOC) –Rate a pet (30 LOC) –Map pets (940 LOC) –Buy a pet (16 LOC) –Catalog (662 LOC) –Persistency (349 LOC) –Logging (799 LOC) –Transactions (102 LOC)

7 Tempo de marcação Cerca de 6~7 horas para escolher os concerns e realizar a marcação

8 Hierarquia de Concerns

9 Exemplo Concerns public String addItem(Item item){ EntityManager em = emf.createEntityManager(); try{ utx.begin(); em.joinTransaction(); for(Tag tag : item.getTags()) { tag.incrementRefCount(); tag.getItems().add(item); em.merge(tag); } em.persist(item); utx.commit(); // index item if(bDebug) System.out.println("\n***Item id of new item is : " + item.getItemID()); indexItem(new IndexDocument(item)); } catch(Exception exe){ try { utx.rollback(); } catch (Exception e) {} throw new RuntimeException("Error persisting item", exe); } finally { em.close(); } return item.getItemID(); } Persistency Transaction Logging Search Maintain pet

10 Exemplo Concerns public void updateItem(Item item){ EntityManager em = emf.createEntityManager(); try{ utx.begin(); em.merge(item); utx.commit(); // update index using delete/insert method (only one available) UpdateIndex.deleteIndex(PetstoreConstants.PETSTORE_INDEX_DIRECTORY, item.getItemID()); indexItem(new IndexDocument(item)); } catch(Exception exe){ try { utx.rollback(); } catch (Exception e) {} throw new RuntimeException("Error updating rating", exe); } finally { em.close(); } Persistency Transaction Search Maintain pet

11 Dificuldades Compilar e rodar a aplicação Escolher casos de uso como concerns Como realizar as marcações quando se usa Annotations (JPA) e JSF/JSP

12 Métricas ConcernDOSCDOSMCDCCDOSLOC Rate a pet0,0000,7811630 Maintain pet0,8840,92110119875 Catalog0,7790,948970662 Search for pets0,9200,951131231245 Buy a pet0,0000,4211216 Map pets0,8350,923896940 Persistecny0,4060,927322349 Logging0,8890,8911326799 Transaction0,0000,73414102

13 Conclusão Transation crosscuts Persistency Logging crosscuts “everything” Search for pets crosscuts Maintain pet As métricas foram úteis para os concerns relacionados aos casos de uso, para o restante não seria necessário.


Carregar ppt "Java Pet Store 2.0 Reference Application Guilherme Oliveira (gkmo)"

Apresentações semelhantes


Anúncios Google