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