Hmmm I may have lost the plot somewhat, as the findbugs annotations are @TypeQualifierNickname's for @Nonnull anyway...
I guess my point is that we need to decide *and document* exactly which annotations are we using. My view is the Nonnull and Nullable are good... ones with parameters are less good. On 8 May 2013 11:16, Stephen Connolly <[email protected]>wrote: > If you do > > <dependency> > <groupId>com.google.code.findbugs</groupId> > <artifactId>jsr305</artifactId> > <version>2.0.1</version> > <scope>provided</scope> > </dependency> > > In one of Maven's APIs thinking that RetentionPolicy.RUNTIME or > RetentionPolicy.COMPILE will save you as the JVM spec says missing > annotations are to be ignored... you will be burned when compiling > implementations of the API unless you add the dependency to *your* > implementation. > > At least some versions (I suspect all but have not confirmed) of JavaC > needs all the annotations with COMPILE or higher retention available so > that, at the very least, it knows whether to retain the annotation or > not... as it may affect the method signature for @Override annotated > methods or something like that... never really be happy about the issue. > > This has bit me when I have an API with @Nonnull annotations and then try > to implement the API class. > > So in such cases using the javax.annotations carries a risk as once/if > JSR-305 gets accepted, the accepted version of the annotations will be part > of the core classloader and the dependency provided version will loose > out... > > Not likely a big risk for @Nonnull or @Nullable... but e.g > @MatchesPattern(value="^\d\d\d-\d\d$",flags=0) might cause issues if in the > reboot the "flags" parameter gets refactored to regexFlags. It is unclear > to me what the JVM spec says in the case where the annotation class is > present but has had a signature change from what was used when the > annotated source was compiled. > > With annotations that are not in the "special" package namespaces we can > at least put our dependency first... but maybe I am just overly paranoid > > > On 8 May 2013 11:01, Kristian Rosenvold <[email protected]>wrote: > >> Linking to one of your private git repos made this only marginally >> clearer; >> I see the edu.umd in there though ! >> >> >> >> > So setting the dependency as "provided" is all well and good until you >> need >> > to implement an interface with the annotation applied... at which point >> you >> > need to add back in the "provided" dependency... >> > >> > But it's still only compile-time, right ? Why would that be a problem ? >> >> >> Having the annotation available at RUNTIME does allow for additional >> > validations, so that would favour JSR-305, but given that you need the >> > dependency transitive for compilation there is scope for issues if >> JSR-305 >> > ever gets rebooted. >> > >> >> Give me this with a tiny spoon please; when would this be a problem ? >> >> >> >> >> >> > On 8 May 2013 09:53, Kristian Rosenvold <[email protected] >> > >wrote: >> > >> > > You mean there's an older set of findbugs annoations ? >> > > >> > > Kristian >> > > >> > > >> > > 2013/5/8 Stephen Connolly <[email protected]> >> > > >> > > > IntelliJ also supports the findbugs and jcip annotations too... but >> in >> > > any >> > > > case I will hold my piece... given that these annotations do not >> have >> > > > parameters the risk is almost non-existant for *these* but I do >> think >> > it >> > > is >> > > > a more general risk >> > > > >> > > > >> > > > On 8 May 2013 09:06, Kristian Rosenvold < >> [email protected] >> > > > >wrote: >> > > > >> > > > > I suspect like a lot of the rest of the community, they simply >> gave >> > up >> > > on >> > > > > the jcp. >> > > > > >> > > > > I am no insider on the project but >> com.google.code.findbugs/jsr-305 >> > was >> > > > > last published in a 2.0.1 version in july 2012, and >> > > > > seems to be alive and kicking. IntelliJ also supports the >> annotations >> > > > which >> > > > > means we finally have /one/ set of annotations >> > > > > that everybody understands. >> > > > > >> > > > > The value of both Nullable and Nonnull is just amazing once you >> get >> > it >> > > > all >> > > > > in place. >> > > > > >> > > > > As for potential classloading issues, I'm sure /someone/ here >> would >> > > know >> > > > :) >> > > > > >> > > > > Kristian >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > 2013/5/8 Stephen Connolly <[email protected]> >> > > > > >> > > > > > On 8 May 2013 08:34, Hervé BOUTEMY <[email protected]> >> wrote: >> > > > > > >> > > > > > > I like this: could we define it as the standard way to add >> such >> > > > > > > annotations in >> > > > > > > whole Maven components? Any problem if we do it in Maven core >> > > itself? >> > > > > > > >> > > > > > > I'm not a JSR-305 expert, any basic explanation on the >> > > > > > > com.google.code.findbugs:jsr305 choice is good to know >> > > > > > > >> > > > > > >> > > > > > Well as of 1.3.8 it's ASL whereas previous ones were LGPL. >> > > > > > >> > > > > > In general I like those annotations, though I tend to favour the >> > > > findbugs >> > > > > > annotations and jcip annotations in code I write while awaiting >> > > jsr305 >> > > > to >> > > > > > finalize (given that the spec is dormant, feared dead: >> > > > > > http://jcp.org/en/jsr/detail?id=305) and I suspect a reboot of >> the >> > > > spec >> > > > > > may >> > > > > > result in signature changes and as such, given that the >> annotations >> > > are >> > > > > > runtime retention, when annotations finally land in the JVM >> there >> > may >> > > > be >> > > > > a >> > > > > > risk from signature change... >> > > > > > >> > > > > > But that could be an irrational fear on my behalf... >> > > > > > >> > > > > > In any case I have clean room ASLv2 licensed versions of the >> > findbugs >> > > > and >> > > > > > jcip annotations in my GitHub repo and published to central. >> > > > > > >> > > > > > >> > > > > > > then we could add it to maven parent pom dependencyManagement >> > > > section, >> > > > > > and >> > > > > > > write something into "Maven Developer Centre" >> > > > > > > >> > > > > > > Regards, >> > > > > > > >> > > > > > > Hervé >> > > > > > > >> > > > > > > Le mardi 7 mai 2013 16:49:25 [email protected] a écrit : >> > > > > > > > Updated Branches: >> > > > > > > > refs/heads/master 231773324 -> 7b330f584 >> > > > > > > > >> > > > > > > > >> > > > > > > > Added jsr305 annotations >> > > > > > > > >> > > > > > > > >> > > > > > > > Project: >> > > > http://git-wip-us.apache.org/repos/asf/maven-surefire/repo >> > > > > > > > Commit: >> > > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/7b330f58Tree >> : >> > > > > > > > >> > > > > > >> > > > >> > http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/7b330f58Diff >> : >> > > > > > > > >> > > > http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/7b330f58 >> > > > > > > > >> > > > > > > > Branch: refs/heads/master >> > > > > > > > Commit: 7b330f5845d9952a75ff5949d5f46fa913254308 >> > > > > > > > Parents: 2317733 >> > > > > > > > Author: Kristian Rosenvold <[email protected]> >> > > > > > > > Authored: Tue May 7 18:49:15 2013 +0200 >> > > > > > > > Committer: Kristian Rosenvold <[email protected]> >> > > > > > > > Committed: Tue May 7 18:49:15 2013 +0200 >> > > > > > > > >> > > > > > > > >> > > > > >> > ---------------------------------------------------------------------- >> > > > > > > > maven-surefire-common/pom.xml | 4 >> ++++ >> > > > > > > > .../plugin/surefire/AbstractSurefireMojo.java | 7 >> > > +++++-- >> > > > > > > > .../maven/plugin/surefire/ClasspathCache.java | 6 >> > ++++-- >> > > > > > > > .../maven/plugin/surefire/CommonReflector.java | 8 >> > > +++++--- >> > > > > > > > .../apache/maven/plugin/surefire/ProviderInfo.java | 3 >> +++ >> > > > > > > > .../surefire/booterclient/ForkConfiguration.java | 4 >> ++-- >> > > > > > > > .../plugin/surefire/util/DependencyScanner.java | 4 >> +++- >> > > > > > > > .../maven/plugin/surefire/util/Relocator.java | 12 >> > > > > ++++++++---- >> > > > > > > > .../maven/plugin/surefire/util/ScannerUtil.java | 10 >> > > > ++++++---- >> > > > > > > > pom.xml | 6 >> > ++++++ >> > > > > > > > 10 files changed, 46 insertions(+), 18 deletions(-) >> > > > > > > > >> > > > > >> > ---------------------------------------------------------------------- >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > refire-common/pom.xml >> > > > > > > > >> > > > > >> > ---------------------------------------------------------------------- >> > > > > > > diff >> > > > > > > > --git a/maven-surefire-common/pom.xml >> > > > b/maven-surefire-common/pom.xml >> > > > > > > index >> > > > > > > > 1330eec..bed467b 100644 >> > > > > > > > --- a/maven-surefire-common/pom.xml >> > > > > > > > +++ b/maven-surefire-common/pom.xml >> > > > > > > > @@ -91,6 +91,10 @@ >> > > > > > > > <artifactId>commons-lang3</artifactId> >> > > > > > > > </dependency> >> > > > > > > > <dependency> >> > > > > > > > + <groupId>com.google.code.findbugs</groupId> >> > > > > > > > + <artifactId>jsr305</artifactId> >> > > > > > > > + </dependency> >> > > > > > > > + <dependency> >> > > > > > > > <groupId>org.apache.maven.shared</groupId> >> > > > > > > > >> <artifactId>maven-common-artifact-filters</artifactId> >> > > > > > > > <version>1.3</version> >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> refire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefir >> > > > > > > > eMojo.java >> > > > > > > > >> > > > > >> > ---------------------------------------------------------------------- >> > > > > > > diff >> > > > > > > > --git >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Abst >> > > > > > > > ractSurefireMojo.java >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Abst >> > > > > > > > ractSurefireMojo.java index bcd5737..bb1f6ff 100644 >> > > > > > > > --- >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Abst >> > > > > > > > ractSurefireMojo.java +++ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Abst >> > > > > > > > ractSurefireMojo.java @@ -88,6 +88,8 @@ import >> > > > > > > > org.apache.maven.surefire.util.RunOrder; >> > > > > > > > import org.apache.maven.toolchain.Toolchain; >> > > > > > > > import org.apache.maven.toolchain.ToolchainManager; >> > > > > > > > >> > > > > > > > +import javax.annotation.Nonnull; >> > > > > > > > + >> > > > > > > > /** >> > > > > > > > * Abstract base class for running tests using Surefire. >> > > > > > > > * >> > > > > > > > @@ -1266,7 +1268,7 @@ public abstract class >> > AbstractSurefireMojo >> > > > > > > > } >> > > > > > > > } >> > > > > > > > >> > > > > > > > - private List<String> getExcludeList() >> > > > > > > > + private @Nonnull List<String> getExcludeList() >> > > > > > > > { >> > > > > > > > List<String> excludes = null; >> > > > > > > > if ( isSpecificTestSpecified() ) >> > > > > > > > @@ -1339,7 +1341,7 @@ public abstract class >> > AbstractSurefireMojo >> > > > > > > > return filterNulls( includes ); >> > > > > > > > } >> > > > > > > > >> > > > > > > > - private List<String> filterNulls( List<String> >> toFilter ) >> > > > > > > > + private @Nonnull List<String> filterNulls( @Nonnull >> > > > List<String> >> > > > > > > > toFilter ) { >> > > > > > > > List<String> result = new ArrayList<String>( >> > > > toFilter.size() >> > > > > > ); >> > > > > > > > for ( String item : toFilter ) >> > > > > > > > @@ -2130,6 +2132,7 @@ public abstract class >> > AbstractSurefireMojo >> > > > > > > > return new DynamicProviderInfo( providerName ); >> > > > > > > > } >> > > > > > > > >> > > > > > > > + @Nonnull >> > > > > > > > public String getProviderName() >> > > > > > > > { >> > > > > > > > return providerName; >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> refire-common/src/main/java/org/apache/maven/plugin/surefire/ClasspathCache. >> > > > > > > > java >> > > > > > > >> > > > >> ---------------------------------------------------------------------- >> > > > > > > > diff --git >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Clas >> > > > > > > > spathCache.java >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Clas >> > > > > > > > spathCache.java index 1bcb065..ea250c2 100644 >> > > > > > > > --- >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Clas >> > > > > > > > spathCache.java +++ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Clas >> > > > > > > > spathCache.java @@ -21,6 +21,8 @@ package >> > > > > > > org.apache.maven.plugin.surefire; >> > > > > > > > import java.util.concurrent.ConcurrentHashMap; >> > > > > > > > import org.apache.maven.surefire.booter.Classpath; >> > > > > > > > >> > > > > > > > +import javax.annotation.Nonnull; >> > > > > > > > + >> > > > > > > > /** >> > > > > > > > * @author Kristian Rosenvold >> > > > > > > > */ >> > > > > > > > @@ -29,12 +31,12 @@ public class ClasspathCache >> > > > > > > > private static final ConcurrentHashMap<String, >> Classpath> >> > > > > > > classpaths = >> > > > > > > > new ConcurrentHashMap<String, Classpath>( 4 ); >> > > > > > > > >> > > > > > > > - public static Classpath getCachedClassPath( String >> > > artifactId >> > > > ) >> > > > > > > > + public static Classpath getCachedClassPath( @Nonnull >> > String >> > > > > > > artifactId >> > > > > > > > ) { >> > > > > > > > return classpaths.get( artifactId ); >> > > > > > > > } >> > > > > > > > >> > > > > > > > - public static void setCachedClasspath( String key, >> > Classpath >> > > > > > > classpath >> > > > > > > > ) + public static void setCachedClasspath( @Nonnull >> String >> > > key, >> > > > > > > @Nonnull >> > > > > > > > Classpath classpath ) { >> > > > > > > > classpaths.put( key, classpath ); >> > > > > > > > } >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> refire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector >> > > > > > > > .java >> > > > > > > >> > > > >> ---------------------------------------------------------------------- >> > > > > > > > diff --git >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Comm >> > > > > > > > onReflector.java >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Comm >> > > > > > > > onReflector.java index 538b7e0..6851539 100644 >> > > > > > > > --- >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Comm >> > > > > > > > onReflector.java +++ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Comm >> > > > > > > > onReflector.java @@ -25,6 +25,8 @@ import >> > > > > > > > >> org.apache.maven.plugin.surefire.report.DefaultReporterFactory; >> > > > > import >> > > > > > > > org.apache.maven.surefire.util.ReflectionUtils; >> > > > > > > > import >> > > org.apache.maven.surefire.util.SurefireReflectionException; >> > > > > > > > >> > > > > > > > +import javax.annotation.Nonnull; >> > > > > > > > + >> > > > > > > > /** >> > > > > > > > * @author Kristian Rosenvold >> > > > > > > > */ >> > > > > > > > @@ -34,7 +36,7 @@ public class CommonReflector >> > > > > > > > >> > > > > > > > private final ClassLoader surefireClassLoader; >> > > > > > > > >> > > > > > > > - public CommonReflector( ClassLoader >> surefireClassLoader ) >> > > > > > > > + public CommonReflector( @Nonnull ClassLoader >> > > > > surefireClassLoader ) >> > > > > > > > { >> > > > > > > > this.surefireClassLoader = surefireClassLoader; >> > > > > > > > >> > > > > > > > @@ -48,7 +50,7 @@ public class CommonReflector >> > > > > > > > } >> > > > > > > > } >> > > > > > > > >> > > > > > > > - public Object createReportingReporterFactory( >> > > > > > > > StartupReportConfiguration startupReportConfiguration ) + >> > > public >> > > > > > > Object >> > > > > > > > createReportingReporterFactory( @Nonnull >> > > StartupReportConfiguration >> > > > > > > > startupReportConfiguration ) { >> > > > > > > > Class<?>[] args = new Class[]{ >> > > > > this.startupReportConfiguration >> > > > > > > }; >> > > > > > > > Object src = createStartupReportConfiguration( >> > > > > > > > startupReportConfiguration ); @@ -58,7 +60,7 @@ public class >> > > > > > > > CommonReflector >> > > > > > > > } >> > > > > > > > >> > > > > > > > >> > > > > > > > - Object createStartupReportConfiguration( >> > > > > > StartupReportConfiguration >> > > > > > > > reporterConfiguration ) + Object >> > > > createStartupReportConfiguration( >> > > > > > > > @Nonnull StartupReportConfiguration reporterConfiguration ) >> { >> > > > > > > > Constructor<?> constructor = >> > > > ReflectionUtils.getConstructor( >> > > > > > > > this.startupReportConfiguration, new Class[]{ boolean.class, >> > > > > > > boolean.class, >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> refire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderInfo.ja >> > > > > > > > va >> > > > > > >> > > ---------------------------------------------------------------------- >> > > > > > > > diff --git >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Prov >> > > > > > > > iderInfo.java >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Prov >> > > > > > > > iderInfo.java index 57069d8..50de7ea 100644 >> > > > > > > > --- >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Prov >> > > > > > > > iderInfo.java +++ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Prov >> > > > > > > > iderInfo.java @@ -24,11 +24,14 @@ import >> > > > > > > > >> org.apache.maven.artifact.resolver.ArtifactResolutionException; >> > > > > import >> > > > > > > > org.apache.maven.plugin.MojoExecutionException; >> > > > > > > > import org.apache.maven.surefire.booter.Classpath; >> > > > > > > > >> > > > > > > > +import javax.annotation.Nonnull; >> > > > > > > > + >> > > > > > > > /** >> > > > > > > > * @author Kristian Rosenvold >> > > > > > > > */ >> > > > > > > > public interface ProviderInfo >> > > > > > > > { >> > > > > > > > + @Nonnull >> > > > > > > > String getProviderName(); >> > > > > > > > >> > > > > > > > boolean isApplicable(); >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> refire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Fo >> > > > > > > > rkConfiguration.java >> > > > > > > > >> > > > > >> > ---------------------------------------------------------------------- >> > > > > > > diff >> > > > > > > > --git >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/boot >> > > > > > > > erclient/ForkConfiguration.java >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/boot >> > > > > > > > erclient/ForkConfiguration.java index 8f6f3c9..ba1aa27 >> 100644 >> > > > > > > > --- >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/boot >> > > > > > > > erclient/ForkConfiguration.java +++ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/boot >> > > > > > > > erclient/ForkConfiguration.java @@ -119,7 +119,7 @@ public >> > class >> > > > > > > > ForkConfiguration >> > > > > > > > >> > > > > > > > /** >> > > > > > > > * @param classPath cla the classpath >> arguments >> > > > > > > > - * @param startupConfiguration >> > > > > > > > + * @param startupConfiguration The startup >> configuration >> > > > > > > > * @param threadNumber the thread number, to be >> > the >> > > > > > > replacement >> > > > > > > > in the argLine @return A commandline * @throws >> > > > > > > > >> org.apache.maven.surefire.booter.SurefireBooterForkException * >> > > > > > > > when unable to perform the fork >> > > > > > > > @@ -208,7 +208,7 @@ public class ForkConfiguration >> > > > > > > > * for all classpath elements. >> > > > > > > > * >> > > > > > > > * @param classPath List<String> of all >> classpath >> > > > > > elements. >> > > > > > > > - * @param startClassName >> > > > > > > > + * @param startClassName The classname to start >> > > (main-class) >> > > > > > > > * @return The file pointint to the jar >> > > > > > > > * @throws java.io.IOException When a file operation >> > fails. >> > > > > > > > */ >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> refire-common/src/main/java/org/apache/maven/plugin/surefire/util/Dependency >> > > > > > > > Scanner.java >> > > > > > > > >> > > > > >> > ---------------------------------------------------------------------- >> > > > > > > diff >> > > > > > > > --git >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /DependencyScanner.java >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /DependencyScanner.java index b50f295..b2e8ab8 100644 >> > > > > > > > --- >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /DependencyScanner.java +++ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /DependencyScanner.java @@ -34,6 +34,8 @@ import >> > > > > > > > org.apache.maven.plugin.MojoExecutionException; import >> > > > > > > > org.apache.maven.shared.utils.io.MatchPatterns; >> > > > > > > > import org.apache.maven.surefire.util.DefaultScanResult; >> > > > > > > > >> > > > > > > > +import javax.annotation.Nullable; >> > > > > > > > + >> > > > > > > > /** >> > > > > > > > * Scans dependencies looking for tests. >> > > > > > > > * >> > > > > > > > @@ -141,7 +143,7 @@ public class DependencyScanner { >> > > > > > > > >> > > > > > > > private SpecificFileFilter specificTestFilter; >> > > > > > > > >> > > > > > > > - public Matcher(List<String> includes, >> > List<String> >> > > > > > > excludes, >> > > > > > > List<String> >> > > > > > > > specificTests) + public Matcher(@Nullable >> > > List<String> >> > > > > > > includes, >> > > > > > > @Nullable >> > > > > > > > List<String> excludes, @Nullable List<String> >> specificTests) { >> > > > > > > > String[] specific = specificTests == >> > null ? >> > > > new >> > > > > > > String[0] : >> > > > > > > > processIncludesExcludes( specificTests ); >> specificTestFilter = >> > > new >> > > > > > > > SpecificFileFilter( specific ); >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> refire-common/src/main/java/org/apache/maven/plugin/surefire/util/Relocator. >> > > > > > > > java >> > > > > > > >> > > > >> ---------------------------------------------------------------------- >> > > > > > > > diff --git >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /Relocator.java >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /Relocator.java index 31dde5d..76da9de 100644 >> > > > > > > > --- >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /Relocator.java +++ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /Relocator.java @@ -19,6 +19,10 @@ package >> > > > > > > > org.apache.maven.plugin.surefire.util; >> > > > > > > > * under the License. >> > > > > > > > */ >> > > > > > > > >> > > > > > > > +import com.sun.istack.internal.NotNull; >> > > > > > > > + >> > > > > > > > +import javax.annotation.Nullable; >> > > > > > > > + >> > > > > > > > /** >> > > > > > > > * Relocates class names when running with relocated >> provider >> > > > > > > > * >> > > > > > > > @@ -26,12 +30,12 @@ package >> > > org.apache.maven.plugin.surefire.util; >> > > > > > > > */ >> > > > > > > > public class Relocator >> > > > > > > > { >> > > > > > > > - private final String relocation; >> > > > > > > > + private final @Nullable String relocation; >> > > > > > > > >> > > > > > > > private static final String relocationBase = >> > > > > > > > "org.apache.maven.surefire."; >> > > > > > > > >> > > > > > > > >> > > > > > > > - public Relocator( String relocation ) >> > > > > > > > + public Relocator( @Nullable String relocation ) >> > > > > > > > { >> > > > > > > > this.relocation = relocation; >> > > > > > > > } >> > > > > > > > @@ -41,12 +45,12 @@ public class Relocator >> > > > > > > > relocation = "shadefire"; >> > > > > > > > } >> > > > > > > > >> > > > > > > > - private String getRelocation() >> > > > > > > > + private @Nullable String getRelocation() >> > > > > > > > { >> > > > > > > > return relocation; >> > > > > > > > } >> > > > > > > > >> > > > > > > > - public String relocate( String className ) >> > > > > > > > + public @NotNull String relocate( @NotNull String >> > className ) >> > > > > > > > { >> > > > > > > > if ( relocation == null ) >> > > > > > > > { >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/maven-su >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> refire-common/src/main/java/org/apache/maven/plugin/surefire/util/ScannerUti >> > > > > > > > l.java >> > > > > > > > >> > > > > >> > ---------------------------------------------------------------------- >> > > > > > > diff >> > > > > > > > --git >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /ScannerUtil.java >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /ScannerUtil.java index 3498e63..8b80301 100644 >> > > > > > > > --- >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /ScannerUtil.java +++ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util >> > > > > > > > /ScannerUtil.java @@ -25,6 +25,8 @@ import java.util.List; >> > > > > > > > >> > > > > > > > import org.apache.commons.lang3.StringUtils; >> > > > > > > > >> > > > > > > > +import javax.annotation.Nonnull; >> > > > > > > > + >> > > > > > > > final class ScannerUtil { >> > > > > > > > >> > > > > > > > private ScannerUtil() {} >> > > > > > > > @@ -35,22 +37,22 @@ final class ScannerUtil { >> > > > > > > > >> > > > > > > > private static final String JAVA_CLASS_FILE_EXTENSION = >> > > > > ".class"; >> > > > > > > > >> > > > > > > > - public static String convertToJavaClassName( String >> test ) >> > > > > > > > + public static @Nonnull String convertToJavaClassName( >> > > @Nonnull >> > > > > > > String >> > > > > > > > test ) { >> > > > > > > > return StringUtils.removeEnd( test, ".class" >> > ).replace( >> > > > FS, >> > > > > > "." >> > > > > > > ); >> > > > > > > > } >> > > > > > > > >> > > > > > > > - public static String >> > convertJarFileResourceToJavaClassName( >> > > > > String >> > > > > > > test >> > > > > > > > ) + public static @Nonnull String >> > > > > > > convertJarFileResourceToJavaClassName( >> > > > > > > > @Nonnull String test ) { >> > > > > > > > return StringUtils.removeEnd( test, ".class" >> > ).replace( >> > > > "/", >> > > > > > > "." ); >> > > > > > > > } >> > > > > > > > >> > > > > > > > - public static String stripBaseDir( String basedir, >> String >> > > > test ) >> > > > > > > > + public static @Nonnull String stripBaseDir( String >> > basedir, >> > > > > String >> > > > > > > test >> > > > > > > > ) { >> > > > > > > > return StringUtils.removeStart( test, basedir ); >> > > > > > > > } >> > > > > > > > >> > > > > > > > - public static String[] processIncludesExcludes( >> > List<String> >> > > > > list >> > > > > > ) >> > > > > > > > + public static @Nonnull String[] >> processIncludesExcludes( >> > > > > @Nonnull >> > > > > > > > List<String> list ) { >> > > > > > > > List<String> newList = new ArrayList<String>(); >> > > > > > > > for ( Object aList : list ) >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/7b330f58/pom.xml >> > > > > > > > >> > > > > >> > ---------------------------------------------------------------------- >> > > > > > > > diff --git a/pom.xml b/pom.xml >> > > > > > > > index 677b367..c60f378 100644 >> > > > > > > > --- a/pom.xml >> > > > > > > > +++ b/pom.xml >> > > > > > > > @@ -265,6 +265,12 @@ >> > > > > > > > <version>3.8.1</version> >> > > > > > > > <scope>test</scope> >> > > > > > > > </dependency> >> > > > > > > > + <dependency> >> > > > > > > > + <groupId>com.google.code.findbugs</groupId> >> > > > > > > > + <artifactId>jsr305</artifactId> >> > > > > > > > + <version>2.0.1</version> >> > > > > > > > + <scope>provided</scope> >> > > > > > > > + </dependency> >> > > > > > > > </dependencies> >> > > > > > > > </dependencyManagement> >> > > > > > > > <dependencies> >> > > > > > > >> > > > > > > >> > > --------------------------------------------------------------------- >> > > > > > > To unsubscribe, e-mail: [email protected] >> > > > > > > For additional commands, e-mail: [email protected] >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> > >
