Hlavní menu

Nástroje

UvodDoKomponent / ParkovisteDS

View (print) - Edit page | Recent changes - Page history

Updated 16 December 2009, 15:07 by Snajberk

UvodDoKomponent.ParkovisteDS History

Hide minor edits - Show changes to output

16 December 2009, 15:07 by Snajberk -
Added lines 1-69:
!! Parkoviště v Declarative Services

Implementace v DS vychází z [[ParkovisteOsgi]]. Odstranili jsme ale Activatory a přidali jsme komponentové definiční soubory. Proto zde budou informace pouze k těmto definičnímsouborům. O eventách si přečtěte v [[ParkovisteOsgi]].

!!! Základ všech konfiguračních souborů

V každém bundlu se samozřejmě vytvoří jedna komponenta, která se pak musí zaregistrovat podobně jako '''Konfigurace'''.

=java122 [=
<service>
<provide interface="cz.zcu.kiv.cosi.parkoviste.konfigurace.IKonfigurace"/>
</service>
=]

Každá služba se pak samozřejmě musí získat přes referenci, aby se mohla použít a nabindovat do vytvářené komponenty. Podobně jako '''Konfigurace'''.

=java122 [=
<reference bind="setKapacita" cardinality="1..1" interface="cz.zcu.kiv.cosi.parkoviste.konfigurace.IKonfigurace" name="Konfigurace" policy="dynamic"/>
=]

!!! Získání EventAdmina

Abychom mohli používat eventy, musíme si zavolat službu na rozhranní EventAdmina. Provede se to naprosto stejně, jako volání jakékoliv jiné služby v DS. Tedy:

=java122 [=
<reference bind="setMessageService" cardinality="1..1" interface="org.osgi.service.event.EventAdmin" name="EventAdmin" policy="dynamic"/>
=]

!!! Eventy v konfiguračních souborech

Protože konfigurační soubory nahrazují Activatory a v těch jsme si registrovali listenery, určitě budeme muset něco registrovat i zde.


Při registraci EventHandlera jsme v Activatoru používali vytvořenou instanci listeneru a parametry.

Zde pouze zaregistrujeme službu na rozhraní '''EventHandler''' a nezapomeneme do komponenty přidat propertu @@<property>@@ s požavaným názvem a hodnotou.

=java122 [=
<service>
<provide interface="org.osgi.service.event.EventHandler"/>
</service>
<property name="event.topics" value="parkoviste/*"/>
=]

!!! Registrace služby na víc rozhranní

Stejně jako v OSGi implementaci, i zde Brana implementuje dvě rozhranní - IZapVyp a IPrijeloOdjelo.

Navíc implementuje i rozhranní '''EventHandler''', aby mohla zpracovávat Eventy.

Není tedy nic jednoduššího, než do @@<service>@@ vyplnit všechny rozhranní, na které bude služba zaregistrovaná. A vyplnit všechny názvy a hodnoty @@<property>@@, které mají být platné. V tomto případě samozřejmě platí obě property pro všechny tři rozhranní.

=java122 [=
<service>
<provide interface="cz.zcu.kiv.cosi.parkoviste.konfigurace.IZapVyp"/>
<provide interface="org.osgi.service.event.EventHandler"/>
<provide interface="cz.zcu.kiv.cosi.parkoviste.brana.IPrijeloOdjelo"/>
</service>
<property name="type" value="brana"/>
<property name="event.topics" value="parkoviste/plne"/>
=]

!!! Použití filtru při výběru služby

Podobně jako v OSGi i zde můžeme použít filtr, když máme na jednom rozhranní zaregistrováno více služeb. Použití je ještě jednodušší - použije se atribut @@target="(pravidlo)"@@

=java122 [=
<reference bind="setBrana" cardinality="1..1" interface="cz.zcu.kiv.cosi.parkoviste.konfigurace.IZapVyp" name="Brana" policy="dynamic" target="(type=brana)"/>
=]