AgE 2.5 : InterfejsIValueProvider

Interfejs IValueProvider

Obiekty klas implementujących interfejs IValueProvider odpowiedzialne są za dostarczanie wartości z nimi powiązanych. W platformie AgE zaimplementowano dwa rodzaje "dostawców", które pokazano na rysunku:


Rysunek: Implementacje IValueProvider

SimpleTypeValueProvider, jest odpowiedzialny za dostarczanie wartości prostych, takich jak liczby, napisy czy adresy agentów. Przechowuje on wartość w postaci zmiennej tekstowej (atrybut value) oraz typ wartości w postaci odpowiedniej klasy. Do konwersji wartości z tekstowej na żądany typ, używa klasy SimpleTypeParser.


Rysunek: Diagram sekwencji dostarczania referencji

ReferenceProvider jest odpowiedzialny za dostarczenia referencji do skojarzonego obiektu. Sekwencja pobierania odpowiedniej referencji przedstawiona jest na rysunku. Po wywołaniu metody getValue, obiekt ReferenceProvider wysyła żądanie dostarczenia obiektu do IComponentInstanceProvider, podając przechowywaną nazwę obiektu (pole name). Domyślna implementacja CoreComponentAdapter deleguje to żądanie do skojarzonego kontenera IoC, który na podstawie nazwy wyszukuje obiekt CoreComponentAdapter skojarzony z definicją szukanego komponentu. Znaleziony adapter przekazuje żądanie do definicji, która tworzy instancję opisywanego przez siebie komponentu. Podczas tworzenia tej instancji możliwe są dalsze zagnieżdżone operacje pobierania zależności. Stworzona instancja jest zwracana przez metodę getValue.

ReferenceProvider posiada również opcjonalne pole class, którego wartość zwracana jest przez metodę getValueClass. Jeśli pole to jest niezdefiniowane, metoda zwraca klasę dostarczanego obiektu. Metoda ta wykorzystywana jest przy dobieraniu odpowiedniego konstruktora podczas wstrzykiwania przez konstruktor.

Attachments: