package gw.admin uses gw.util.NamedRef uses gw.api.productmodel.PolicyLinePattern uses java.util.List uses gw.forms.GenericFormInferenceBase uses gw.validation.PCValidationBase class FormInferenceClassRef extends NamedRef, String> { construct(inferenceClassPath : String) { super(inferenceClassPath) } construct(inferenceClassType : Type< GenericFormInferenceBase >) { super(inferenceClassType, inferenceClassType.Name) } property get ClassType() : Type< GenericFormInferenceBase > { return Instance } property get Path() : String { return Code } override property get DisplayName() : String { var inst = createInstance() if (inst != null) { return inst.DisplayName } else { return Path } } property get ValidPolicyLines() : List { var inst = createInstance() if (inst != null) { return inst.ValidPolicylines } else { return {} } } property get PolicyLineRequired() : boolean { var inst = createInstance() return inst != null ? inst.PolicyLineRequired : false } function validateCustomFields(formPattern : FormPattern, validation : PCValidationBase) { var inst = createInstance() if (inst != null) { inst.validateCustomFields(formPattern, validation) } } private function createInstance() : GenericFormInferenceBase { if (ClassType == null or ClassType.Abstract) { return null } var noArgConstructor = ClassType.TypeInfo.Constructors.firstWhere(\ i -> i.Parameters.IsEmpty) if (noArgConstructor == null) { return null } return noArgConstructor.Constructor.newInstance({}) as GenericFormInferenceBase } }