private static void checkProfile(RulesProfile profile, ValidationMessages messages) { if (StringUtils.isBlank(profile.getName())) { messages.addErrorText("The mandatory node <name> is missing."); } if (StringUtils.isBlank(profile.getLanguage())) { messages.addErrorText("The mandatory node <language> is missing."); } }
private ValidationMessages restoreXmlModel(String xml, @Nullable final String languageKey) { checkPermission(); ValidationMessages validationMessages = ValidationMessages.create(); Date updateDate = new Date(system2.now()); DbSession session = dbClient.openSession(false); try { List<CharacteristicDto> allCharacteristicDtos = restoreCharacteristics(characteristicsXMLImporter.importXML(xml), updateDate, session); restoreRules( allCharacteristicDtos, rules(languageKey, session), rulesXMLImporter.importXML(xml, validationMessages), validationMessages, updateDate, session); session.commit(); } catch (IllegalArgumentException e) { LOG.debug("Error when restoring the model", e); validationMessages.addErrorText(e.getMessage()); } finally { MyBatis.closeQuietly(session); } return validationMessages; }
/** {@inheritDoc} */ @Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { RulesProfile profile = RulesProfile.create(); profile.setLanguage(CSharpConstants.LANGUAGE_KEY); try { List<StyleCopRule> styleCopConfig = StyleCopRuleParser.parse(IOUtils.toString(reader)); for (StyleCopRule styleCopRule : styleCopConfig) { if (styleCopRule.isEnabled()) { String ruleName = styleCopRule.getName(); Rule rule = ruleFinder.find(RuleQuery.create().withRepositoryKey(getKey()).withKey(ruleName)); if (rule != null) { String rawPriority = styleCopRule.getPriority(); RulePriority rulePriority = RulePriority.MINOR; if (StringUtils.isNotEmpty(rawPriority)) { rulePriority = RulePriority.valueOfString(rawPriority); } profile.activateRule(rule, rulePriority); } } } } catch (IOException e) { messages.addErrorText("Failed to read the profile to import: " + e.getMessage()); } return profile; }
public RulesProfile parse(Reader reader, ValidationMessages messages) { RulesProfile profile = RulesProfile.create(); SMInputFactory inputFactory = initStax(); try { SMHierarchicCursor rootC = inputFactory.rootElementCursor(reader); rootC.advance(); // <profile> SMInputCursor cursor = rootC.childElementCursor(); while (cursor.getNext() != null) { String nodeName = cursor.getLocalName(); if (StringUtils.equals("rules", nodeName)) { SMInputCursor rulesCursor = cursor.childElementCursor("rule"); processRules(rulesCursor, profile, messages); } else if (StringUtils.equals("name", nodeName)) { profile.setName(StringUtils.trim(cursor.collectDescendantText(false))); } else if (StringUtils.equals("language", nodeName)) { profile.setLanguage(StringUtils.trim(cursor.collectDescendantText(false))); } } } catch (XMLStreamException e) { messages.addErrorText("XML is not valid: " + e.getMessage()); } checkProfile(profile, messages); return profile; }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { SMInputFactory inputFactory = initStax(); RulesProfile profile = RulesProfile.create(); try { SMHierarchicCursor rootC = inputFactory.rootElementCursor(reader); rootC.advance(); // <ruleset> SMInputCursor ruleCursor = rootC.childElementCursor(RULE_NODE); while (ruleCursor.getNext() != null) { String ruleKey = ruleCursor.getAttrValue(RULE_CLASS_ATTR); Rule rule = ruleFinder.findByKey(CodeNarcConstants.REPOSITORY_KEY, ruleKey); if (rule == null) { messages.addWarningText("CodeNarc rule '" + ruleKey + "' not found"); } else { ActiveRule activeRule = profile.activateRule(rule, null); processProperties(ruleCursor, activeRule); } } } catch (XMLStreamException e) { messages.addErrorText("XML is not valid: " + e.getMessage()); } return profile; }
public ValidationMessages restoreProfile(String xmlBackup) { ValidationMessages messages = ValidationMessages.create(); RulesProfile profile = xmlProfileParser.parse(new StringReader(xmlBackup), messages); if (profile != null) { DatabaseSession session = sessionFactory.getSession(); RulesProfile existingProfile = session.getSingleResult( RulesProfile.class, "name", profile.getName(), "language", profile.getLanguage()); if (existingProfile != null) { messages.addErrorText( "The profile " + profile + " already exists. Please delete it before restoring."); } else if (!messages.hasErrors()) { session.saveWithoutFlush(profile); session.commit(); } } return messages; }
/** * @param messages * @param e * @return */ protected final PmdRuleset emptyRuleSetAndLogMessages(ValidationMessages messages, Exception e) { String errorMessage = "The PMD configuration file is not valid"; messages.addErrorText(errorMessage + " : " + e.getMessage()); LOG.error(errorMessage, e); return new PmdRuleset(); }