This is an automated email from the git hooks/post-receive script. New commit to branch feature/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 6d070a250bb1c6407d8bd9fd6cb8584267a0e820 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 9 16:11:50 2016 +0200 Check if classes are implemented --- .../maven/plugins/checkapi/CheckApiMojo.java | 29 +++++++++++++--------- .../plugins/checkapi/MissingClassException.java | 21 ++++++++++++++++ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/CheckApiMojo.java b/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/CheckApiMojo.java index effd66e..bee92eb 100644 --- a/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/CheckApiMojo.java +++ b/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/CheckApiMojo.java @@ -34,6 +34,8 @@ import org.nuiton.plugin.AbstractPlugin; import java.io.File; import java.lang.reflect.Method; +import java.util.Collections; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -92,7 +94,7 @@ public class CheckApiMojo extends AbstractPlugin { */ @Parameter(property = "checkApi.encoding", defaultValue = "${project.build.sourceEncoding}", required = true) protected String encoding; - protected ImmutableMap<ClassPath.ClassInfo, ClassPath.ClassInfo> translationMap; + protected Map<ClassPath.ClassInfo, ClassPath.ClassInfo> translationMap; @Override protected void init() throws Exception { @@ -112,7 +114,7 @@ public class CheckApiMojo extends AbstractPlugin { ImmutableMap<String, ClassPath.ClassInfo> targetClassInfosByClassName = Maps.uniqueIndex(targetApiClassesInPackage, ClassPath.ClassInfo::getName); - ImmutableMap.Builder<ClassPath.ClassInfo, ClassPath.ClassInfo> translationMapBuilder = ImmutableMap.builder(); + Map<ClassPath.ClassInfo, ClassPath.ClassInfo> translationMap = new LinkedHashMap<>(); for (ClassPath.ClassInfo sourceClassInfo : sourceApiClassesInPackage) { @@ -146,27 +148,26 @@ public class CheckApiMojo extends AbstractPlugin { String targetName = targetPackageName + "." + targetSimpleName; + ClassPath.ClassInfo targetClassInfo; + if (!targetClassInfosByClassName.containsKey(targetName)) { - if (isVerbose()) { - getLog().info("No matching target found for source class: " + sourceClassInfo); - } - continue; + targetClassInfo = null; + } else { + targetClassInfo = targetClassInfosByClassName.get(targetName); } - ClassPath.ClassInfo targetClassInfo = targetClassInfosByClassName.get(targetName); - if (isVerbose()) { getLog().info("Found maching class to check : " + sourceClassInfo + " → " + targetClassInfo); } - translationMapBuilder.put(sourceClassInfo, targetClassInfo); + translationMap.put(sourceClassInfo, targetClassInfo); } } - translationMap = translationMapBuilder.build(); + this.translationMap = Collections.unmodifiableMap(translationMap); } @@ -197,7 +198,7 @@ public class CheckApiMojo extends AbstractPlugin { ClassPath.ClassInfo targetClassInfo = entry.getValue(); Class<?> sourceClass = sourceClassInfo.load(); - Class<?> targetClass = targetClassInfo.load(); + Class<?> targetClass = targetClassInfo == null ? null : targetClassInfo.load(); checkClass(sourceClass, targetClass); @@ -225,7 +226,7 @@ public class CheckApiMojo extends AbstractPlugin { this.verbose = verbose; } - private void checkClass(Class<?> sourceClass, Class<?> targetClass) throws MissingMethodException, MismatchMethodParameterNameException { + private void checkClass(Class<?> sourceClass, Class<?> targetClass) throws MissingMethodException, MismatchMethodParameterNameException, MissingClassException { Method[] sourceDeclaredMethods = sourceClass.getDeclaredMethods(); @@ -235,6 +236,10 @@ public class CheckApiMojo extends AbstractPlugin { } + if (targetClass == null) { + throw new MissingClassException(sourceClass.getName()); + } + for (Method sourceMethod : sourceDeclaredMethods) { Method targetMethod; diff --git a/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/MissingClassException.java b/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/MissingClassException.java new file mode 100644 index 0000000..76a347a --- /dev/null +++ b/observe-check-api-maven-plugin/src/main/java/fr/ird/observe/maven/plugins/checkapi/MissingClassException.java @@ -0,0 +1,21 @@ +package fr.ird.observe.maven.plugins.checkapi; + +/** + * Created on 09/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class MissingClassException extends Exception { + private static final long serialVersionUID = -816569500190950442L; + + private final String sourceClassName; + + public MissingClassException(String sourceClassName) { + this.sourceClassName = sourceClassName; + } + + @Override + public String getMessage() { + return "Target class not found for contract " + sourceClassName; + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.