java pet store 2.0 reference application
DESCRIPTION
Java Pet Store 2.0 Reference Application. Guilherme Oliveira ( gkmo ). 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. O projeto. O projeto. Pontos importantes: - PowerPoint PPT PresentationTRANSCRIPT
Java Pet Store 2.0Reference Application
Guilherme Oliveira (gkmo)
O projetoO 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
O projetoO projeto
O projetoO projeto
• 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…
MétricasMé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
ConcernsConcerns
• 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)
Tempo de marcaçãoTempo de marcação
• Cerca de 6~7 horas para escolher os concerns e realizar a marcação
Hierarquia de Concerns
Hierarquia de Concerns
Exemplo ConcernsExemplo 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
Exemplo ConcernsExemplo 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
DificuldadesDificuldades
• 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
MétricasMétricas
Concern DOSC DOSM CDC CDO SLOC
Rate a pet 0,000 0,781 1 6 30
Maintain pet 0,884 0,921 10 119 875
Catalog 0,779 0,948 9 70 662
Search for pets 0,920 0,951 13 123 1245
Buy a pet 0,000 0,421 1 2 16
Map pets 0,835 0,923 8 96 940
Persistecny 0,406 0,927 3 22 349
Logging 0,889 0,891 13 26 799
Transaction 0,000 0,734 1 4 102
ConclusãoConclusã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.