@Override public boolean validates(@NonNull MergingReport.Builder mergingReport, @NonNull XmlAttribute attribute, @NonNull String value) { Matcher matcher = PATTERN.matcher(value); boolean valid = matcher.matches() && matcher.group(1).length() <= 8; if (!valid) { attribute.addMessage(mergingReport, MergingReport.Record.Severity.ERROR, String.format( "Attribute %1$s at %2$s is not a valid hexadecimal 32 bit value," + " found %3$s", attribute.getId(), attribute.printPosition(), value )); } return valid; } }
@Override public boolean validates(@NonNull MergingReport.Builder mergingReport, @NonNull XmlAttribute attribute, @NonNull String value) { boolean matches = TRUE_PATTERN.matcher(value).matches() || FALSE_PATTERN.matcher(value).matches(); if (!matches) { attribute.addMessage(mergingReport, MergingReport.Record.Severity.ERROR, String.format( "Attribute %1$s at %2$s has an illegal value=(%3$s), " + "expected 'true' or 'false'", attribute.getId(), attribute.printPosition(), value ) ); } return matches; } }
@Override public boolean validates(@NonNull MergingReport.Builder mergingReport, @NonNull XmlAttribute attribute, @NonNull String value) { try { return Integer.parseInt(value) > 0; } catch (NumberFormatException e) { attribute.addMessage(mergingReport, MergingReport.Record.Severity.ERROR, String.format( "Attribute %1$s at %2$s must be an integer, found %3$s", attribute.getId(), attribute.printPosition(), value) ); return false; } } }
@Override public boolean validates(@NonNull MergingReport.Builder mergingReport, @NonNull XmlAttribute attribute, @NonNull String value) { for (String multiValue : multiValues) { if (multiValue.equals(value)) { return true; } } attribute.addMessage(mergingReport, MergingReport.Record.Severity.ERROR, String.format( "Invalid value for attribute %1$s at %2$s, value=(%3$s), " + "acceptable values are (%4$s)", attribute.getId(), attribute.printPosition(), value, allValues ) ); return false; } }
: MergingReport.Record.Severity.ERROR; xmlAttribute.addMessage(mergingReportBuilder, severity, String.format( "Attribute %1$s at %2$s requires a placeholder substitution"
@Override public boolean validates(@NonNull MergingReport.Builder mergingReport, @NonNull XmlAttribute attribute, @NonNull String value) { boolean valid = super.validates(mergingReport, attribute, value); if (valid) { try { Long decodedValue = Long.decode(value); valid = decodedValue >= mMinimumValue && decodedValue < 0xFFFFFFFFL; } catch(NumberFormatException e) { valid = false; } if (!valid) { attribute.addMessage(mergingReport, MergingReport.Record.Severity.ERROR, String.format( "Attribute %1$s at %2$s is not a valid hexadecimal value," + " minimum is 0x%3$08X, maximum is 0x%4$08X, found %5$s", attribute.getId(), attribute.printPosition(), mMinimumValue, Integer.MAX_VALUE, value )); } return valid; } return false; } }
private void addIllegalImplicitOverrideMessage( @NonNull MergingReport.Builder mergingReport, @NonNull AttributeModel attributeModel, @NonNull XmlElement implicitNode) { String error = String.format("Attribute %1$s value=(%2$s) at %3$s" + " cannot override implicit default value=(%4$s) at %5$s", getId(), getValue(), printPosition(), attributeModel.getDefaultValue(), implicitNode.printPosition()); addMessage(mergingReport, MergingReport.Record.Severity.ERROR, error); }
void addMessage(@NonNull MergingReport.Builder report, @NonNull SourcePosition position, @NonNull MergingReport.Record.Severity severity, @NonNull String message) { report.addMessage( new SourceFilePosition(getOwnerElement().getDocument().getSourceFile(), position), severity, message); }
higherPriority.getOwnerElement().printPosition()); higherPriority.addMessage(report, attributeRecord != null ? attributeRecord.getActionLocation().getPosition()