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 markup

16 December 2009, 15:07 by Snajberk -
Added lines 1-69:

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

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.

<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.

<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:

<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.

<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í.

<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)"

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