SimpleViolation implements Violation { public static SimpleViolation fromReported(final Violation violation) { Severity severity = violation.getSeverity(); String description = violation.getDescription(); List<PackageId> packages = new ArrayList<>(violation.getPackages()); return new SimpleViolation(severity, description, packages); } SimpleViolation(final Severity severity, final String description, final PackageId... packages);  SimpleViolation(final Severity severity, final String description, final List<PackageId> packages); static Builder builder(); static Builder builder(final ResourceBundle resourceBundle); @Override Severity getSeverity(); @Override Collection<PackageId> getPackages(); @Override String getDescription(); static SimpleViolation fromReported(final Violation violation); static SimpleViolation fromJson(final JsonObject jsonViolation); @Override String toString(); @Override boolean equals(final Object o); @Override int hashCode();  }
@Test public void testFromReported() { final Severity severity = Severity.MINOR; final PackageId packId = PackageId.fromString("my_pack"); final String description = "some description"; final Violation violation = new Violation() { @Override public Severity getSeverity() { return severity; } @Override public Collection<PackageId> getPackages() { return Collections.singletonList(packId); } @Override public String getDescription() { return description; } }; final SimpleViolation simpleViolation = SimpleViolation.fromReported(violation); assertSame("expect same severity", severity, simpleViolation.getSeverity()); assertEquals("expect equal packageIds", Collections.singletonList(packId), simpleViolation.getPackages()); assertSame("expect same description", description, simpleViolation.getDescription()); }