public void addMessageSet(final MessageSet messageSet) { if (messageSet != null) { for (final String errorMsg : messageSet.getErrorMessages()) { errors.put(errorMsg, messageSet.getLinkForError(errorMsg)); } for (final String warningMsg : messageSet.getWarningMessages()) { warnings.put(warningMsg, messageSet.getLinkForError(warningMsg)); } for (final String errorMsgInEng : messageSet.getErrorMessagesInEnglish()) { errorsInEnglish.add(errorMsgInEng); } for (final String warningMsgInEng : messageSet.getWarningMessagesInEnglish()) { warningsInEnglish.add(warningMsgInEng); } } }
public boolean isValid() { return !errors.hasAnyErrors(); } }
public MessageSet validateMappings(final I18nHelper i18nHelper, final SimpleProjectImportIdMapper simpleProjectImportIdMapper) { final MessageSet messageSet = new MessageSetImpl(); for (final String oldId : simpleProjectImportIdMapper.getRequiredOldIds()) { // Get the mapped id final String newId = simpleProjectImportIdMapper.getMappedId(oldId); if (newId == null) { // Check for orphan data if (simpleProjectImportIdMapper.getKey(oldId) == null) { messageSet.addWarningMessage(i18nHelper.getText("admin.errors.project.import.project.role.validation.orphan", oldId)); messageSet.addWarningMessageInEnglish("The project role with id '" + oldId + "' can not be resolved into an actual project role in the backup file. Any comments or worklogs that were protected by this project role will no longer have a visibility restriction."); } else { // Add an error that the value is not mapped messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.project.role.validation.does.not.exist", simpleProjectImportIdMapper.getDisplayName(oldId))); messageSet.addErrorMessageInEnglish("The Project Role '" + simpleProjectImportIdMapper.getDisplayName(oldId) + "' is required for the import but does not exist in the current JIRA instance."); } } } return messageSet; }
private boolean validateOperator(final TerminalClause clause, final MessageSet messages) { messages.addMessageSet(operatorUsageValidator.validate(searcher, clause)); return messages.hasAnyErrors(); }
public void handleInvalidLabel(String label) { messageSet.addWarningMessage(i18n.getText("dropping.label.with.invalid.characters", label)); messageSet.addWarningMessageInEnglish("Dropping label '" + label + "' because it has invalid characters"); } });
private void writeLogMessages(final MessageSet messageSet) { if (messageSet == null) { return; } // Log the errors for (final String s1 : messageSet.getErrorMessagesInEnglish()) { LOG.error(s1); } // Log the warnings for (final String s : messageSet.getWarningMessagesInEnglish()) { LOG.warn(s); } }
private SearchService.ParseResult parseAndValidateJql(String jql, Long filterId, ApplicationUser user, JiraServiceContext context) { //parse query SearchService.ParseResult parseResult = searchService.parseQuery(user, jql); if (!parseResult.isValid()) { context.getErrorCollection().addErrorMessages(parseResult.getErrors().getErrorMessages()); } //validate Query else { MessageSet validationResults = searchService.validateQuery(user, parseResult.getQuery(), filterId); if (validationResults.hasAnyErrors()) { context.getErrorCollection().addErrorMessages(validationResults.getErrorMessages()); } } return parseResult; }
@Override public MessageSet validate(final ApplicationUser user, final FunctionOperand operand, final TerminalClause terminalClause) { MessageSet errors = super.validate(user, operand, terminalClause); if (!errors.hasAnyErrors()) { if (!subTaskManager.isSubTasksEnabled()) { String key = "jira.jql.issue.type.function.invalid.if.sub.tasks.disabled"; errors.addErrorMessage(getI18n().getText(key, getFunctionName())); } } return errors; } }
sb.append("\"prj_ver\": \"").append(project.getProjectVersions().size()).append('"'); sb.append(", "); sb.append("\"prj_imp\": ").append(!messageSet.hasAnyErrors()); sb.append(", "); sb.append("\"errors\": ").append("[").append(makeJsArray(messageSet.getErrorMessages())).append("]"); sb.append(", "); sb.append("\"warnings\": ").append("[").append(makeJsArray(messageSet.getWarningMessages())).append("]");
messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.issuelinktype.style.in.new.type.only", issueLinkTypeName, newStyle)); messageSet.addErrorMessageInEnglish("The Issue Link Type '" + issueLinkTypeName + "' has no style value in the backup, but has style '" + newStyle + "' in the current system."); messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.issuelinktype.subtasks.disabled")); messageSet.addErrorMessageInEnglish("The project to import includes subtasks, but subtasks are disabled in the current system."); messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.issuelinktype.style.in.old.type.only", issueLinkTypeName, oldStyle)); messageSet.addErrorMessageInEnglish("The Issue Link Type '" + issueLinkTypeName + "' has style '" + oldStyle + "' in the backup, but has no style in the current system."); messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.issuelinktype.different.styles", issueLinkTypeName, oldStyle, newStyle)); messageSet.addErrorMessageInEnglish("The Issue Link Type '" + issueLinkTypeName + "' has style '" + oldStyle + "' in the backup, but has style '" + newStyle + "' in the current system.");
private void validateField(ApplicationUser searcher, String fieldName, MessageSet messages) { if (!indexedChangeHistoryFieldManager.getIndexedChangeHistoryFieldNames().contains(fieldName.toLowerCase())) { messages.addErrorMessage(getI18n(searcher).getText("jira.jql.history.field.not.supported", fieldName)); } }
public MessageSet validate(final ApplicationUser searcher, final FunctionOperand functionOperand, final TerminalClause terminalClause) { I18nHelper i18n = getI18n(); final MessageSet messageSet = new NumberOfArgumentsValidator(MIN_EXPECTED_ARGS, i18n).validate(functionOperand); if (!messageSet.hasAnyErrors()) { if (functionOperand.getArgs().size() == 1 && searcher == null) { messageSet.addErrorMessage(i18n.getText("jira.jql.function.anonymous.disallowed", getFunctionName())); } // The functionality to run this for a user other than the logged in user has been removed until decisions can be made regarding http://jira.atlassian.com/browse/JRA-21476 // else // { // if (functionOperand.getArgs().size() == 2) // { // final String username = functionOperand.getArgs().get(1); // if (userUtil.getUser(username) == null) // { // messageSet.addErrorMessage(i18n.getText(getUserNotFoundMessageKey(), functionOperand.getName(), username)); // } // } // } messageSet.addMessageSet(validateCapability(functionOperand.getArgs().get(0), i18n)); } return messageSet; }
messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.issuelinktype.disabled")); messageSet.addErrorMessageInEnglish("Issue Linking must be enabled because there are issue links in the project to import."); if (issueLinkType == null) messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.issuelinktype.type.does.not.exist", issueLinkTypeName)); messageSet.addErrorMessageInEnglish("The Issue Link Type '" + issueLinkTypeName + "' is required for the import but does not exist in the current JIRA instance."); if (!messageSet.hasAnyErrors()) messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.issuelinktype.no.mapping", issueLinkTypeName)); messageSet.addErrorMessageInEnglish("The Issue Link Type '" + issueLinkTypeName + "' is required for the import but has not been mapped."); messageSet.addErrorMessage(i18nHelper.getText("admin.errors.project.import.issuelinktype.mapped.type.does.not.exist", issueLinkTypeName, newId)); messageSet.addErrorMessageInEnglish("The Issue Link Type '" + issueLinkTypeName + "' was mapped to an IssuelinkType ID (" + newId + ") that does not exist.");
public void validateParams(final ApplicationUser user, SearchContext searchContext, FieldValuesHolder fieldValuesHolder, I18nHelper i18nHelper, ErrorCollection errors) { final String query = (String) fieldValuesHolder.get(id); if (StringUtils.isNotBlank(query)) { final MessageSet validationResult = textQueryValidator.validate(createQueryParser(), query, id, null, true, i18nHelper); for (final String errorMessage : validationResult.getErrorMessages()) { errors.addError(id, errorMessage); } } }
getValidationResults().addWarningMessage( i18nHelper.getText("admin.project.import.attachment.project.directory.does.not.exist", projectAttachmentsSubdir)); getValidationResults().addWarningMessageInEnglish( "The provided attachment path does not contain a sub-directory called '" + projectAttachmentsSubdir + "'. If you proceed with the import attachments will not be included."); if (getValidationResults().getWarningMessages().size() >= MAX_WARNINGS) getValidationResults().addWarningMessage(i18nHelper.getText("admin.project.import.attachment.too.many.warnings")); getValidationResults().addWarningMessage( i18nHelper.getText("admin.project.import.attachment.missing.filename", externalAttachment.getId(), attachmentFile.getAbsolutePath())); getValidationResults().addWarningMessage( i18nHelper.getText("admin.project.import.attachment.does.not.exist", externalAttachment.getFileName(), attachmentFile.getAbsolutePath()));
messageSet.addErrorMessage(getText(i18n, "admin.error.project.import.null.project")); jiraServiceContext.getErrorCollection().addErrorMessage(getText(i18n, "admin.error.project.import.null.project")); return messageSet; messageSet.addErrorMessage(getText(i18n, "admin.errors.project.import.must.be.admin")); if (existingProject == null) messageSet.addErrorMessage(getText(i18n, "admin.error.project.import.no.existing.project", projectKey)); messageSet.addErrorMessage(getText(i18n, "admin.error.project.import.historical.key", existingProject.getName(), projectKey)); jiraServiceContext.getErrorCollection().addErrorMessages(messageSet.getErrorMessages()); return messageSet;
if ((mappingResult.getIssueTypeMessageSet() != null) && !mappingResult.getIssueTypeMessageSet().hasAnyErrors()) if (!mappingResult.getCustomFieldMessageSet().hasAnyErrors()) messageSet.addWarningMessage(getText(i18n, "admin.warning.project.import.mapping.no.backup.atttachment.path")); LOG.warn("File attachments will not be imported because you have not provided a backup attachment path."); mappingResult.setFileAttachmentMessageSet(messageSet);
messages.addMessageSet(messageSet); messages.addErrorMessage(i18n.getText("jira.jql.validation.no.such.field", clause.getName())); messages.addErrorMessage(i18n.getText("jira.jql.validation.no.such.field.anonymous", clause.getName()));
private void validateIssueKeysBatch(final MessageSet messages, final Set<String> issueKeys, final ApplicationUser searcher, final TerminalClause clause, final Operand operand) { Set<String> missingIssueKeys = issueSupport.getKeysOfMissingIssues(issueKeys); for (String missingIssueKey : missingIssueKeys) { addErrorIssueKeyNotFound(messages, missingIssueKey, searcher, clause, operand); } Set<String> validIssueKeys = new HashSet<String>(issueKeys); validIssueKeys.removeAll(missingIssueKeys); if (!validIssueKeys.isEmpty()) { messages.addMessageSet( movedIssueValidator.validate(searcher, validIssueKeys, clause)); } }
void validateProjectOrFilterId(String projectOrFilterId, Collection<ValidationError> validationErrors) { if (StringUtils.isBlank(projectOrFilterId)) { validationErrors.add(new ValidationError("projectOrFilterId", "gadget.common.required.query")); return; } SearchRequest searchRequest = chartUtils.retrieveOrMakeSearchRequest(projectOrFilterId, new HashMap<String, Object>()); if (null != searchRequest) { MessageSet messageSet = searchService.validateQuery(jiraAuthenticationContext.getLoggedInUser(), searchRequest.getQuery()); if (messageSet.hasAnyErrors()) { for (String error : messageSet.getErrorMessages()) validationErrors.add(new ValidationError("projectOrFilterId", "gadget.common.invalid.filter.validationfailed", CollectionBuilder.newBuilder(projectOrFilterId, error).asList())); } } else { validationErrors.add(new ValidationError("projectOrFilterId", "gadget.common.required.query")); } }