/** * validate the field value * * @param operationContext OperationContext * @param errorCollectionToAddTo ErrorCollection * @param i18n I18nHelper * @param issue Issue * @param fieldScreenRenderLayoutItem FieldScreenRenderLayoutItem */ public void validateParams( OperationContext operationContext, ErrorCollection errorCollectionToAddTo, I18nHelper i18n, Issue issue, FieldScreenRenderLayoutItem fieldScreenRenderLayoutItem) { Map fieldValuesHolder = operationContext.getFieldValuesHolder(); String summary = (String) getValueFromParams(fieldValuesHolder); if (summary == null) { errorCollectionToAddTo.addError(getId(), i18n.getText("createissue.error.specify.a.summary")); return; } // JRADEV-1867 User can create summary with " " summary = summary.trim(); if (!TextUtils.stringSet(summary)) { errorCollectionToAddTo.addError(getId(), i18n.getText("createissue.error.specify.a.summary")); } if (summary.contains("\n") || summary.contains("\r")) { errorCollectionToAddTo.addError(getId(), i18n.getText("createissue.invalidsummary.newlines")); } if (summary.length() > MAX_LEN) { errorCollectionToAddTo.addError( getId(), i18n.getText("createissue.error.summary.less.than", MAX_LEN.toString())); } }
@Override public void validateFromParams( CustomFieldParams cfParams, ErrorCollection errorCollection, FieldConfig fieldConfig) { @SuppressWarnings("unchecked") final Collection<String> params = cfParams.getAllValues(); CustomField cf = fieldConfig.getCustomField(); JiraAuthenticationContext authCtx = ComponentManager.getInstance().getJiraAuthenticationContext(); I18nHelper i18n = authCtx.getI18nHelper(); UserProjectHistoryManager userProjectHistoryManager = ComponentManager.getComponentInstanceOfType(UserProjectHistoryManager.class); Project currentProject = userProjectHistoryManager.getCurrentProject(Permissions.BROWSE, authCtx.getLoggedInUser()); boolean isAutocompleteView; if (cf.isAllProjects()) { isAutocompleteView = qfMgr.isAutocompleteView(cf.getIdAsLong(), Consts.PROJECT_ID_FOR_GLOBAL_CF); } else { isAutocompleteView = qfMgr.isAutocompleteView(cf.getIdAsLong(), currentProject.getId()); } if (isAutocompleteView) { if ((params == null) || params.isEmpty()) { boolean addNull; if (cf.isAllProjects()) { addNull = qfMgr.getAddNull(cf.getIdAsLong(), Consts.PROJECT_ID_FOR_GLOBAL_CF); } else { addNull = qfMgr.getAddNull(cf.getIdAsLong(), currentProject.getId()); } if (!addNull) { errorCollection.addError( fieldConfig.getFieldId(), i18n.getText("queryfields.error.isnotnull")); } } else { if (params.size() > 1) { errorCollection.addError( fieldConfig.getFieldId(), i18n.getText("queryfields.error.invalid.params")); } else { for (String param : params) { Issue issue = issueMgr.getIssueObject(param); if (issue == null) { errorCollection.addError( fieldConfig.getFieldId(), i18n.getText("queryfields.error.notissue", param)); } } } } } }
private void validateRemoveComment( ErrorCollection errorCollectionToAddTo, Map<String, Object> commentParams, ApplicationUser user) { Object commentIdObj = commentParams.get(PARAM_COMMENT_ID); if (commentIdObj != null) { try { Long commentId = Long.valueOf((String) commentIdObj); commentService.hasPermissionToDelete( new JiraServiceContextImpl(user, errorCollectionToAddTo), commentId); } catch (NumberFormatException ex) { errorCollectionToAddTo.addError( IssueFieldConstants.COMMENT, "invalid comment id specified."); } } else { errorCollectionToAddTo.addError(IssueFieldConstants.COMMENT, "no comment id specified."); } }
private void validateEditComment( ErrorCollection errorCollection, Issue issue, Map<String, Object> commentParams, String body, Visibility visibility, ApplicationUser user) { if (commentParams.get(PARAM_COMMENT_ID) != null) { try { commentService.isValidCommentBody(body, errorCollection); final Long commentIdAsLong = Long.valueOf((String) commentParams.get(PARAM_COMMENT_ID)); commentService.hasPermissionToEdit( new JiraServiceContextImpl(user, errorCollection), commentIdAsLong); commentService.isValidCommentVisibility(user, issue, visibility, errorCollection); validateCommentProperties(commentParams, errorCollection); } catch (NumberFormatException ex) { errorCollection.addError(IssueFieldConstants.COMMENT, "invalid comment id specified."); } } else { errorCollection.addError(IssueFieldConstants.COMMENT, "no comment id specified."); } }
public void addError(String name, String error) { errorCollection.addError(name, error); }
public void validateGetBackupOverview( final JiraServiceContext jiraServiceContext, final ProjectImportOptions projectImportOptions) { Null.not("projectImportOptions", projectImportOptions); validateJiraServiceContext(jiraServiceContext); final ErrorCollection errorCollection = jiraServiceContext.getErrorCollection(); final I18nHelper i18n = jiraServiceContext.getI18nBean(); // The user must have the system administrator permission to perform a project import if (!userHasSysAdminPermission(jiraServiceContext.getUser())) { errorCollection.addErrorMessage(getText(i18n, "admin.errors.project.import.must.be.admin")); // Don't care to check any more validity return; } if (StringUtils.isEmpty(projectImportOptions.getPathToBackupXml())) { errorCollection.addError( "backupXmlPath", getText(i18n, "admin.errors.project.import.provide.backup.path")); } else if (!pathExists(projectImportOptions.getPathToBackupXml(), true)) { errorCollection.addError( "backupXmlPath", getText(i18n, "admin.errors.project.import.invalid.backup.path")); } // Check if the user has supplied an attachment path if (!StringUtils.isEmpty(projectImportOptions.getAttachmentPath())) { // Check that attachments are enabled for the current JIRA if (!attachmentManager.attachmentsEnabled()) { errorCollection.addError( "backupAttachmentPath", getText(i18n, "admin.errors.project.import.attachments.not.enabled")); } // Now check if the path exists else if (pathExists(projectImportOptions.getAttachmentPath(), false)) { // Path Exists, but it is not allowed to be the current system's Attachment Path. // Get the configured attachment path for this JIRA instance. final String attachmentPathString = attachmentPathManager.getAttachmentPath(); // Create a File object with it. final File attachmentPathFile = new File(attachmentPathString); // Create a File object with the attachment path final File backupAttachmentPathFile = new File(projectImportOptions.getAttachmentPath()); // Compare the canonical paths to see if the directories are the same. try { if (attachmentPathFile .getCanonicalPath() .equals(backupAttachmentPathFile.getCanonicalPath())) { errorCollection.addError( "backupAttachmentPath", getText(i18n, "admin.errors.project.import.attachment.backup.path.same.as.system")); } } catch (final IOException e) { // This would be rather strange, but see the javadoc for getCanonicalFile(): // "If an I/O error occurs, which is possible because the construction of the canonical // pathname may require filesystem queries" errorCollection.addErrorMessage( getText(i18n, "admin.errors.project.import.attachment.ioexception", e.getMessage())); } } else { // Path doesn't exist errorCollection.addError( "backupAttachmentPath", getText(i18n, "admin.errors.project.import.invalid.attachment.backup.path")); } } }
private void transferErrorMessages( ErrorCollection errorCollection, Collection<String> errorMessages) { for (String errMsg : errorMessages) { errorCollection.addError(getId(), errMsg); } }