I-ASOS Cvičenie 5

ASOS – 5. cvičenie

Môžete dokončiť úlohy z predchádzajúcich cvičenípokiaľ ich ešte nemáte.

Úloha 1.

Implementujte servis pre poisťovnu, ktorý bude spravovať (uchovávať v pamäti) zoznam uzavretých zmlúv, ktorých štruktúra je zobrazená na UML diagrame:

Predmety/I-ASOS/CV5/cv5-poist1.png

Servis bude poskytovať operáciu:

  • Zmluva najdiZmluvu(String cislo)

ktorá vyhľadá uzavretú zmluvu podľa jej čísla a vráti ju, ak neexistuje vráti výnimku. Pozn. predpokladáme, že každá zmluva bude jednoznačne identifikovaná svojím číslom.

Návod k implementácii a testovaniu

  • Pri implementácii použite postup code-first

  • Pre otestovanie operácie vložte (pri inicializácii servisu) do zoznamu jednu zmluvu, ktorá bude mať dvoch účastníkov, prvý bude majitelom aj poistencom, druhý bude len poistenec.
  • funkčnosť operácie najdiZmluvu si overte pomocou netbeans klienta (Test web service).

    • Všimnite si štruktúru xml správy so zmluvou. (účastníci sú štruktúrované podlelementy obsahujúce všetky informácie o osobe, majitel aj poistenci sú kompletné kópie účastníkov)

    • pozrite si WSDL dokument a XML schému (v nej si všimnite, že účastník majitel aj poistenec sú elementy komplexného typu Osoba)

Úloha 2.

Upakujte predchádzajúcu úlohu pričom budete postupovať postupom contract-first. Na rozdiel od xml-schémy vygenereovanej v predchádzajúcej úlohe, navrhnite, štruktúru zmluvy podľa UML diagramu

Predmety/I-ASOS/CV5/cv5-poist2.png

pričom:

  • majiteľ bude xml-referencia t.j. element jednoduchého typu IDREF (a nie komplexného typu Osoba ako v úlohe 1)

  • Podobne poistenec bude viacnásobný element typu IDREF.

  • Dôležité! aby bolo možné použiť xml-referencie na osoby,

    • musí byť niektorý z atribútov osoby xml-typu ID, ktorý ju jednoznačne identifikuje v rámci xml-dokumentu. Preto je pridaný do triedy Osoba v UML diagrame nový atribút id.

    • osoba na ktorú odkazuje referencia sa musí nachádzať v dokumente – v zozname účastníkov. To je v UML zachytené komentárom a odlíšením typu asociácií (učastník je kompozícia)

  • Všimnite si tiež, že schéma

    • umožňuje obmendziť aj maximálny počet pre viacnásobné elementy
    • rozlišuje viaceré typy pre dátum/čas

Návod k testovaniu

  • Rovnako ako v prvej úlohe pre otestovanie operácie vložte (pri inicializácii servisu) do zoznamu jednu zmluvu, ktorá bude mať dvoch účastníkov, prvý bude majitelom aj poistencom, druhý bude len poistenec.
  • funkčnosť operácie najdiZmluvu si overte pomocou netbeans klienta (Test web service).

    • Všimnite si štruktúru xml správy so zmluvou. (účastníci sú podlelementy obsahujúce všetky informácie o osobe, majitel a poistenci sú však teraz jednoduché elementy)

    • pozrite si vygenerované triedy Osoba a Zmluva a všimnite si JAXB anotácie.

Úloha 2b.

reimplementujte predchádzjúcu úlohu pričom, v schéme pre zmluvu použijete pre poistencov xml-typ IDREFS. Porovnajte vygenerovaný kód triedy Zmluva a posielané xml správy z predchádzajúcou verziou.

Úloha 3.

Doplňte servis z predchádzjúcej úlohy o operácie:

  • String novaZmluva(Zmluva navrh);

    • skontroluje, či zmluva má majitela a aspoň jedného poistenca, ak nie vráti výnimku
    • priradí zmluve jednoznačné číslo, dátum uzavretia, zaradí ju do zoznamu uzavretých zmlúv a vráti jej číslo
  • void pridajPoistenca (String cislo, Osoba poistenec);

    • vyhľadá uzavretú zmluvu podľa čísla a pridá do nej poistenca.
    • ak zmluva z neexistuje vráti výnimku.

Úloha 4.

Implementujte pre servis z úlohy 3. java klienta, ktorý

  • vyskúša pridať nového poistenca do zmluvy s neexistujúcim čislom (servis by mal vyhodiť výnimku a klient by ju mal odchytiť)
  • vytvorí novú zmluvu s jediným účastníkom, ktorý je zároveň poistencom aj majitelom
  • následne do novej zmluvy pridá dalšieho poistenca
  • a nakoniec vyhľadá novú zmluvu a vypíše mená učastníkov, majiteľa aj poistených osôb.

Úloha 5.

Vytvorte xml-schému, wsdl-dokument podľa UML class a sequence diagramov:

Predmety/I-ASOS/P4/poistenie-class.jpg

Predmety/I-ASOS/P4/poistenie-sequence.jpg

Pokúste sa v schéme zachytiť aj všetky inforácie zachytené v UML-diagramoch vrátane inštrukcií (contranits) popísaných v komentároch.

Úloha 6.

  • Reimplementujte si sami web servisy zo 5. prednášky, a otestujte si ich funkčnosť pomocou SoapUI