func (this ParamInteractor) GetParam(paramName string, request *io.Request) ParamValue {
	registeredParam := this.GetRegisteredParamByName(paramName)
	if &registeredParam == nil {
		return registeredParam
	}
	paramValue, ok := request.GetInteractorParamString(paramName)
	if ok {
		registeredParam.Value = paramValue
	} else {
		registeredParam.Value = registeredParam.DefaultValue
	}
	return registeredParam
}
func (this ParamInteractor) Validate(request *io.Request) error {
	missingRequiredParams := []string{}
	if len(this.Params) > 0 {
		for _, param := range this.Params {
			if !param.IsRequired {
				continue
			}
			_, found := request.GetInteractorParamString(param.ParamName)
			if !found {
				missingRequiredParams = append(missingRequiredParams, param.ParamName)
			}
		}
	}

	if len(missingRequiredParams) > 0 {
		return errors.New("Missing required interactor param(s): " + strings.Join(missingRequiredParams, ","))
	}

	if this.ValidatorCallback != nil {
		return this.ValidatorCallback(request)
	}

	return nil
}