java pet store 2.0 reference application

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

Upload: sinjin

Post on 01-Feb-2016

45 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Java Pet Store 2.0 Reference Application

Java Pet Store 2.0Reference Application

Guilherme Oliveira (gkmo)

Page 2: Java Pet Store 2.0 Reference Application

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

Page 3: Java Pet Store 2.0 Reference Application

O projetoO projeto

Page 4: Java Pet Store 2.0 Reference Application

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…

Page 5: Java Pet Store 2.0 Reference Application

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

Page 6: Java Pet Store 2.0 Reference Application

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)

Page 7: Java Pet Store 2.0 Reference Application

Tempo de marcaçãoTempo de marcação

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

Page 8: Java Pet Store 2.0 Reference Application

Hierarquia de Concerns

Hierarquia de Concerns

Page 9: Java Pet Store 2.0 Reference Application

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

Page 10: Java Pet Store 2.0 Reference Application

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

Page 11: Java Pet Store 2.0 Reference Application

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

Page 12: Java Pet Store 2.0 Reference Application

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

Page 13: Java Pet Store 2.0 Reference Application

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.