This is an automated email from the ASF dual-hosted git repository. adangel pushed a commit to branch pmd7 in repository https://gitbox.apache.org/repos/asf/maven-pmd-plugin.git
commit 54ba1665f56583c8098cca1af188faa5cfcf5e20 Author: Andreas Dangel <adan...@apache.org> AuthorDate: Fri May 19 19:29:27 2023 +0200 REPLACE ME - Make m-pmd-p forward compatible for upcoming changes in RuleViolation.getFilename() -> RuleViolation.getFileId()->getFileName() Refs https://github.com/pmd/pmd/pull/4425 --- .../maven/plugins/pmd/ExcludeViolationsFromFile.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/pmd/ExcludeViolationsFromFile.java b/src/main/java/org/apache/maven/plugins/pmd/ExcludeViolationsFromFile.java index 38919a4..55c9a98 100644 --- a/src/main/java/org/apache/maven/plugins/pmd/ExcludeViolationsFromFile.java +++ b/src/main/java/org/apache/maven/plugins/pmd/ExcludeViolationsFromFile.java @@ -84,8 +84,23 @@ public class ExcludeViolationsFromFile implements ExcludeFromFile<Violation> { * @return <code>true</code> if the violation should be excluded, <code>false</code> otherwise. */ public boolean isExcludedFromFailure(final RuleViolation errorDetail) { - final String className = - extractClassName(errorDetail.getPackageName(), errorDetail.getClassName(), errorDetail.getFilename()); + // Forward compatible change for https://github.com/pmd/pmd/pull/4425 + String fileName; + try { + fileName = errorDetail.getFilename(); + } catch (NoSuchMethodError e) { + try { + // fileName = errorDetail.getFileId().getFileName(); + Object fileId = errorDetail.getClass().getMethod("getFileId").invoke(errorDetail); + java.lang.reflect.Method getFileName = fileId.getClass().getMethod("getFileName"); + getFileName.setAccessible(true); + fileName = (String) getFileName.invoke(fileId); + } catch (ReflectiveOperationException e2) { + e2.addSuppressed(e); + throw new RuntimeException(e2); + } + } + final String className = extractClassName(errorDetail.getPackageName(), errorDetail.getClassName(), fileName); return isExcludedFromFailure(className, errorDetail.getRule().getName()); }