AgE 2.5 : ObiektowyModelKonfiguracjiImpl

Obiektowy model konfiguracji - implementacja

Poniższy rysunek przedstawia diagram klas tworzących Obiektowy model konfiguracji:


Rysunek 1. Implementacja obiektowego modelu konfiguracji

Configuration

Klasa Configuration reprezentuje pojedynczą, kompletną konfigurację, czyli zbiór definicji komponentów tworzących drzewiaste struktury. Metoda getComponentDefinitions() zwraca listę definicji, które są korzeniami w tych strukturach.

TODO: dodać diagram obiektowy przedstawiający przykładową hierarchiczną konfigurację

IComponentDefinition

IComponentDefinition będący wspólnym interfejsem dla wszystkich definicji komponentów, definiuje metody opisujące pojedynczy komponent:

  • getName - zwracająca nazwę komponentu,
  • getType - zwracająca klasę komponentu,
  • isSingleton - zwracająca true w przypadku, kiedy komponent jest reprezentowany przez obiekt będący singletonem.

Tworzenie nowych instancji komponentów umożliwia metoda createInstance, która zwraca w pełni zainicjalizowany obiekt. Do rozstrzygania zależności od innych komponentów wykorzystywany jest obiekt typu IComponentInstanceProvider ustawiany automatycznie przy tworzeniu obiektu definicji. Więcej na temat na stronie... TODO: uzupełnić!

ComponentDefinition

Klasa ComponentDefinition opisuje komponent, który jest reprezentowany przez dowolny obiekt. Oprócz opisanych wcześniej elementów posiada pola:

  • constructorArguments, czyli listę obiektów IValueProvider, które zostaną wykorzystane do uzyskania odpowiednich wartości prostych lub referencji podczas wstrzykiwania przez konstruktor
  • propertyInitializers, czyli mapę zawierającą powiązania pomiędzy nazwą właściwości komponentu a obiektem IPropertyInitializer odpowiedzialnym za dostarczenie odpowiedniej referencji lub wartości prostej; mapa ta wykorzystywana jest podczas wstrzykiwania za pomocą adnotowanych metod lub pól

Definicje komponentu reprezentowanego przez kolekcję - ListDefinition, SetDefinition, MapDefinition

Definicje kolekcji zawierają natomiast kolekcje obiektów IValueProvider, które posłużą do "wypełnienia" tworzonych kolekcji odpowiednimi instancjami.

ListDefinition oraz SetDefinition posiadają mapy elementów, gdzie kluczem jest obiekt typu IValueProvider, a wartością dodatnia liczba wystąpień w kolekcji. Takie rozwiązanie umożliwia tworzenie wielu instancji tego samego typu w kolekcjach.

Definicja mapy posiada listę obiektów MapItem, które składają się z klucza i wartości typu IValueProvider każda.

Attachments: