package gw.contactaddress uses com.guidewire.pl.system.bundle.InsertCallback uses gw.api.extension.ExtensionInterfaces uses gw.api.util.ExternalIDUtil uses gw.api.util.PCSequenceUtilKeyRegistry uses PCSequenceUtilKeyRegistry#CONTACT_ADDRESS_EXTERNALID uses PCSequenceUtilKeyRegistry#ADDRESS_EXTERNALID uses ExternalIDUtil#mintNewExternalID(String) @ReadOnly class ContactAddressLifeCycleImpl implements InsertCallback { private var _contactAddress : ContactAddress public construct(contactAddress : entity.ContactAddress) { _contactAddress = contactAddress } override function beforeInsert() { if (associatedWithUserContact()) { return } if (ExtensionInterfaces.IContactAddressExtensions.NeedsNewExternalID(_contactAddress)) { _contactAddress.setExternalID(mintNewExternalID(CONTACT_ADDRESS_EXTERNALID)) } var address = _contactAddress.Address if (ExtensionInterfaces.IAddressExtensions.NeedsNewExternalID(address)) { address.setExternalID(mintNewExternalID(ADDRESS_EXTERNALID)) } } /** * PCContactLifeCycle.handleBeforeInsert() avoids minting new external IDs for UserContacts * Preserving that behavior for ContactAddresses */ private function associatedWithUserContact() : boolean { return (_contactAddress.Contact typeis UserContact) } }