Esempio n. 1
0
 protected function _mapException(\Exception $e, $map = null, $useKey = false)
 {
     if ($e instanceof ValidateException) {
         $errors = $e->getValidationErrors();
         if (!$map) {
             $map = $this->_mapModelToSdp;
         }
         $message = $this->_mapExceptionMessage($e, $map);
         foreach ($errors as $attr => $err) {
             if ($useKey) {
                 $new = current(array_keys($map, $attr));
             } else {
                 if (isset($map[$attr])) {
                     // Map validation error
                     $new = $map[$attr];
                 }
             }
             if (isset($new)) {
                 $errors[$new] = $err;
                 unset($errors[$attr]);
                 unset($new);
             }
         }
         return new ValidateException($message, array('validationErrors' => $errors, 'entity' => $e->getEntity()));
     }
     return $e;
 }
Esempio n. 2
0
 /**
  * Renders validation errors and sends a 422 error code
  *
  * @param \Exception $error Exception instance
  * @return \Cake\Network\Response
  */
 public function validation($error)
 {
     $url = $this->controller->request->here();
     $status = $code = $error->getCode();
     try {
         $this->controller->response->statusCode($status);
     } catch (Exception $e) {
         $status = 422;
         $this->controller->response->statusCode($status);
     }
     $sets = ['code' => $code, 'url' => h($url), 'message' => $error->getMessage(), 'error' => $error, 'errorCount' => $error->getValidationErrorCount(), 'errors' => $error->getValidationErrors(), '_serialize' => ['code', 'url', 'message', 'errorCount', 'errors']];
     $this->controller->set($sets);
     return $this->_outputMessage('error400');
 }
Esempio n. 3
0
 public function createError(\Exception $ex)
 {
     if ($ex instanceof \Application\Exceptions\ValidateException) {
         $error = $this->_getFirstError($ex->getValidationErrors(), $field, $message);
         // Error message has a valid UNICA format?
         if ($message && !preg_match('/^Supported values are (.+)/', $message)) {
             $message = '';
         }
     } else {
         $field = '#unknownField#';
         $error = '#unknownError#';
     }
     $errorModel = new ErrorModel(array('fault' => array('code' => FaultModel::FAULT_CODE_CLIENT, 'description' => "Generic Validation fault"), 'code' => 1021, 'category' => ErrorModel::ERROR_CATEGORY_SVC, 'description' => $field ? 'Invalid parameter value: ' . $field . ". " . $message : $ex->getMessage()));
     switch ($error) {
         case \Zend_Validate_StringLength::TOO_SHORT:
         case \Zend_Validate_StringLength::TOO_LONG:
             $errorModel->description = "Invalid '" . $field . "' length." . $message;
             $errorModel->code = 1011;
             break;
         case \Zend_Validate_InArray::NOT_IN_ARRAY:
             switch ($field) {
                 case 'lifeCycleState':
                     $errorModel->description = "Invalid parameter value: {$field}. Supported values are " . implode(",", LifeCycleModel::getStatuses());
                     break;
                 case 'simType':
                     $errorModel->description = "Invalid parameter value: {$field}. Supported values are " . implode(",", array(\Application\Model\SimModel::SIM_TYPE_GLOBAL, \Application\Model\SimModel::SIM_TYPE_LOCAL));
                     break;
                 default:
                     $errorModel->description = "Invalid parameter value: {$field}";
                     break;
             }
             break;
         case 'badPeriod':
             $errorModel->description = "Invalid parameter value: {$field}.";
             break;
         case \App_Validate_NotEmptyIfField::IS_EMPTY:
             $errorModel->description = "Needed parameter was not found: {$field}.";
             $errorModel->code = 1020;
             break;
     }
     return $errorModel;
 }
Esempio n. 4
0
 public function createError(\Exception $ex)
 {
     if ($ex instanceof ValidateException) {
         $error = $this->_getFirstError($ex->getValidationErrors(), $field, $message);
         // Error message has a valid UNICA format?
         $origMessage = $message;
         if ($message && !preg_match('/^Supported values are (.+)/', $message)) {
             $message = '';
         }
     } else {
         $field = '#unknownField#';
         $error = '#unknownError#';
     }
     $exMessage = preg_replace('/(.*)filter\\s*\'(\\w+)\': (.*)/', '$1parameter value: $2.', $ex->getMessage());
     $errorModel = new ErrorModel(array('fault' => array('code' => FaultModel::FAULT_CODE_CLIENT, 'description' => "Generic Validation fault"), 'code' => 1021, 'category' => ErrorModel::ERROR_CATEGORY_SVC, 'description' => $field ? 'Invalid parameter value: ' . $field . ". " . $message : $exMessage));
     switch ($error) {
         case 'customerId':
             //TODO this validation should throw a NotFoundException instead
             //of a ValidationException this is a very dirty approach to the
             //problem
             if (preg_match("/No\\sorganization\\s'(?P<customerId>[[:ascii:]]+)'\\swas\\sfound/", $origMessage, $matches)) {
                 $message = sprintf("Resource %s does not exist", $matches['customerId']);
                 $errorModel->description = $message;
                 $errorModel->code = 1006;
             }
             break;
             //[Apism2m] SVC 1020 o SVC 1021
             //According mail from apism2m list, change 1020 code to 1021.
             //            case \Zend_Validate_NotEmpty::IS_EMPTY:
             //                $errorModel->description = "Needed parameter not found: '" . $field . "' - " . $message;
             //                $errorModel->code = 1020;
             //                break;
         //[Apism2m] SVC 1020 o SVC 1021
         //According mail from apism2m list, change 1020 code to 1021.
         //            case \Zend_Validate_NotEmpty::IS_EMPTY:
         //                $errorModel->description = "Needed parameter not found: '" . $field . "' - " . $message;
         //                $errorModel->code = 1020;
         //                break;
         case \Zend_Validate_StringLength::TOO_LONG:
             if (preg_match('/is more than (?P<num>\\d+) characters long/', $origMessage, $matches)) {
                 $message = 'Length should be less than ' . $matches['num'] . ' characters';
             }
             $errorModel->description = "Invalid '" . $field . "' length. " . $message;
             $errorModel->code = 1011;
             break;
         case \Zend_Validate_InArray::NOT_IN_ARRAY:
             switch ($field) {
                 case 'lifeCycleState':
                     $errorModel->description = "Invalid parameter value: {$field}. Supported values are " . implode(",", LifeCycleModel::getStatuses());
                     break;
                 case 'simType':
                     $errorModel->description = "Invalid parameter value: {$field}. Supported values are " . implode(",", array(\Application\Model\SimModel::SIM_TYPE_GLOBAL, \Application\Model\SimModel::SIM_TYPE_LOCAL));
                     break;
                 default:
                     $errorModel->description = "Invalid parameter value: {$field}";
                     break;
             }
             break;
         case 'badPeriod':
             $errorModel->description = "Invalid parameter value: {$field}.";
             break;
         case \App_Validate_Enum_Currency::CURRENCY:
             $errorModel->description = "Invalid parameter value: {$field}.";
             break;
         case \App_Validate_NotEmptyIfField::IS_EMPTY:
             $errorModel->description = "Needed parameter was not found: {$field}.";
             $errorModel->code = 1020;
             break;
         case \App_Validate_GSM0338Charset::INVALID_CHAR:
             $errorModel->code = 1012;
             break;
     }
     return $errorModel;
 }