Konfigurations- und Erweiterungsmöglichkeiten

Umgang mit erweiterbaren Enums

Das Partnermodell des Partner-Interfaces definiert eine Reihe von erweiterbaren Enum-Klassen, wie unter anderem Gender, Salutation oder CreditCardType, die von den Modellklassen des Partnermodells verwendet werden. Deren tatsächlich vorhandene Enum-Werte werden aber erst später durch das anbindende System festgelegt und sind somit nicht Teil des Partner-Interface-Modells.

PartnerRepository

Zur Abfrage von tatsächlich vorhandenen Enum-Werten kann das Interface PartnerRepository verwendet werden. Dieses stellt entsprechende Methoden, wie z.B. PartnerRepository#getAllowedGenders(), PartnerRepository#getAllowedSalutations() oder PartnerRepository#getAllowedCreditCardTypes() zur Verfügung und kann nach Bedarf implementiert werden. Beispielimplementierungen im Partner-Interface sind DefaultCachingPartnerRepository, InMemoryPartnerRepository und InMemoryPartnerRepositoryCdi.

IEnumValueLookupServices

Für alle erweiterbaren Enum-Klassen des Partner-Interfaces werden entsprechende EnumValueLookupServices zur Verfügung gestellt, wie beispielsweise GenderEnumValueLookupService, SalutationEnumValueLookupService oder CreditCardTypeEnumValueLookupService. Alle diese Services benötigen eine PartnerRepository-Instanz, an die sie das Ermitteln der möglichen Enum-Werte delegieren.

PartnerEnumsRuntimeRepositoryLookup

Zudem wird mit dem PartnerEnumsRuntimeRepositoryLookup ein spezielles IRuntimeRepositoryLookup zur Verfügung gestellt, das ebenfalls eine PartnerRepository-Instanz benötigt. Dieses Lookup stellt ein IRuntimeRepository für die Klassen des Partnermodells zur Verfügung, zu dem außerdem alle oben beschriebenen EnumLookupServices hinzugefügt sind und das daher zum Erhalten von Enum-Werten aus dem PartnerRepository verwendet werden kann.

Soll das PartnerEnumsRuntimeRepositoryLookup als Bean injizierbar sein, muss das das Partner-Interface anbindende System eine entsprechende Bean-Methode zur Verfügung stellen.

Das PartnerEnumsRuntimeRepositoryLookup wird zudem von AttributeConverter-Klassen für die Persistierung der Werte der erweiterbaren Enum-Klassen verwendet. Solche AttributeConverter existieren für alle erweiterbaren Enum-Klassen des Partner-Interfaces, wie zum Beispiel GenderEnumConverter, SalutationEnumConverter oder CreditCardTypeEnumConverter (siehe auch das Kapitel zur Persistenz).