[java-mvn-enforcer] 02/02: Start cleaning up non-null ness
Rod Widdowson
rdw at steadingsoftware.com
Tue Aug 22 09:20:37 UTC 2023
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch main
in repository java-mvn-enforcer.
View the commit online:
http://git.shibboleth.net/view/?p=java-mvn-enforcer.git;a=commit;h=994d342e1c5fea19ae7744b3499d763afb3de8f9
commit 994d342e1c5fea19ae7744b3499d763afb3de8f9
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed Jun 28 16:43:34 2023 +0100
Start cleaning up non-null ness
---
.../mvn/enforcer/impl/DependencyChecker.java | 2 +-
.../mvn/enforcer/impl/EnforcerLogger.java | 6 ++-
.../shibboleth/mvn/enforcer/impl/GPGKeyRing.java | 7 ++-
.../shibboleth/mvn/enforcer/impl/JarEnforcer.java | 42 ++++++++++-------
.../shibboleth/mvn/enforcer/impl/M2SigChecker.java | 11 +++--
.../shibboleth/mvn/enforcer/impl/MavenLoader.java | 4 +-
.../shibboleth/mvn/enforcer/impl/ParsedPom.java | 55 ++++++++++++++--------
.../shibboleth/mvn/enforcer/impl/PomArtifact.java | 16 +++----
.../mvn/enforcer/impl/ProjectPomContext.java | 37 ++++++++++-----
.../cli/impl/ListKeysCommandLineArguments.java | 3 +-
10 files changed, 113 insertions(+), 70 deletions(-)
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/DependencyChecker.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/DependencyChecker.java
index b8fdb43..83d7667 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/DependencyChecker.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/DependencyChecker.java
@@ -285,7 +285,7 @@ public class DependencyChecker {
for (final Pair<DependencyPomArtifact,DependencyPomArtifact> poms : parentPom.getDuplicates()) {
final DependencyPomArtifact f = poms.getFirst();
final DependencyPomArtifact s = poms.getSecond();
-
+ assert f!=null && s !=null;
report.format("%-30s: %10s (from %s) and %s (from %s)\n", f.getMapKey(),
f.getVersion(), f.getSourcePomFilename(),
s.getVersion(), s.getSourcePomFilename());
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/EnforcerLogger.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/EnforcerLogger.java
index 146c245..cd3a23c 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/EnforcerLogger.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/EnforcerLogger.java
@@ -19,9 +19,11 @@
import java.util.regex.Pattern;
+import javax.annotation.Nonnull;
+import org.slf4j.LoggerFactory;
+
import org.apache.maven.plugin.logging.Log;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
@@ -391,7 +393,7 @@ public final class EnforcerLogger implements Logger {
* @param clazz what to log
* @return a logger
*/
- public static Logger getLogger(final Class<?> clazz) {
+ @Nonnull public static Logger getLogger(final Class<?> clazz) {
if (encapsulatedLogger != null) {
return encapsulatedLogger;
}
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/GPGKeyRing.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/GPGKeyRing.java
index 76c94cc..ebda222 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/GPGKeyRing.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/GPGKeyRing.java
@@ -32,7 +32,6 @@ import java.util.Iterator;
import java.util.Set;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe;
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
@@ -60,7 +59,7 @@ import org.slf4j.Logger;
@Nonnull private final Logger log = EnforcerLogger.getLogger(GPGKeyRing.class);
/** The key store backup. */
- @Nullable private Path backup;
+ //@Nullable private Path backup;
/** KeyRing. */
@Nonnull private final PGPPublicKeyRingCollection keyRings;
@@ -129,7 +128,7 @@ import org.slf4j.Logger;
* {@link PGPPublicKeyRingCollection#PGPPublicKeyRingCollection(InputStream,
* org.bouncycastle.openpgp.operator.KeyFingerPrintCalculator)}
*/
- private static PGPPublicKeyRingCollection loadRingFromAsc(final InputStream in) throws IOException {
+ @Nonnull private static PGPPublicKeyRingCollection loadRingFromAsc(@Nonnull final InputStream in) throws IOException {
try (final InputStream decoded = PGPUtil.getDecoderStream(in)) {
final ArrayList<PGPPublicKeyRing> listr = new ArrayList<>();
@@ -182,7 +181,7 @@ import org.slf4j.Logger;
* @return the Signature.
* @throws IOException if there is a problem reading the file of it it doesn't represent a signature
*/
- protected static Signature signatureOf(final InputStream stream) throws IOException {
+ protected static Signature signatureOf(@Nonnull final InputStream stream) throws IOException {
return new Signature(stream);
}
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
index 1843284..4db5cee 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/JarEnforcer.java
@@ -33,6 +33,7 @@ import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
@@ -65,17 +66,17 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
*/
/** Relative path of the parent pom.*/
- private String parentPomDir=".";
+ @Nonnull private String parentPomDir=".";
/** Space separated list of tgz files. */
- private String tgzFiles="";
+ @Nonnull private String tgzFiles="";
/** Space separated list of tgz files. */
- private String zipFiles="";
+ @Nonnull private String zipFiles="";
/** Where to get external data. Group */
- private String dataGroupId = "";
+ @Nonnull private String dataGroupId = "";
/** Where to get external data. ArtifactName*/
- private String dataArtifactId = "";
+ @Nonnull private String dataArtifactId = "";
/** Where to get external data. Version*/
- private String dataVersion = "";
+ @Nonnull private String dataVersion = "";
/** The key rings for the data .*/
private String dataKeyRing;
/** Will we check that all jars we distribute jars have valid signatures? */
@@ -106,10 +107,10 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
private boolean multipleJarVersionsFatal = true;
/** The list of things which get added to real versions. */
- private String versionExtensions = "-SNAPSHOT -GA -jre -empty-to-avoid-conflict-with-guava";
+ @Nonnull private String versionExtensions = "-SNAPSHOT -GA -jre -empty-to-avoid-conflict-with-guava";
/** The list of classifiers we know about*/
- private String classifiers = "";
+ @Nonnull private String classifiers = "";
/** Our artifact resolver. */
private ArtifactResolver artifactResolver;
@@ -166,7 +167,7 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
* {@inheritDoc}
*/
@Override
- public void execute(final EnforcerRuleHelper helper) throws EnforcerRuleException {
+ public void execute(@Nonnull final EnforcerRuleHelper helper) throws EnforcerRuleException {
EnforcerLogger.setMavenLogger(helper.getLog());
log = EnforcerLogger.getLogger(JarEnforcer.class);
@@ -245,7 +246,7 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
* @return A class loader built from the downloaded artifact
* @throws Exception upon an error
*/
- private ClassLoader getGPGDataClassLoader() throws Exception {
+ @Nonnull private ClassLoader getGPGDataClassLoader() throws Exception {
final File pom = downloadArtifact(dataGroupId, dataArtifactId, dataVersion, "", "pom");
if (pom == null || !pom.exists()) {
@@ -288,10 +289,15 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
* @return if this worked (or was suppressed)
* @throws Exception is resolution fails
*/
- private boolean performM2Check(final ProjectPomContext pomContext) throws Exception {
+ private boolean performM2Check(@Nonnull final ProjectPomContext pomContext) throws Exception {
boolean m2Result = true;
if (checkM2) {
- final Path resolvedPom = downloadArtifact(dataGroupId, dataArtifactId, dataVersion, "", "jar").toPath();
+ final File resolvePomFile = downloadArtifact(dataGroupId, dataArtifactId, dataVersion, "", "jar");
+ if (resolvePomFile == null) {
+ log.error("Could not ressolve maven-enforcer-data");
+ return false;
+ }
+ final Path resolvedPom = resolvePomFile.toPath();
// Resolved pom path is <pathTpM2Repo>/group1/group2/..../artifact/version/pomfilename
log.debug("Resolved Pom = {}", resolvedPom);
Path root = resolvedPom.getParent().getParent().getParent(); // strip version, artifact
@@ -324,8 +330,8 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
* @throws IOException if a file was not found or archive handling failed
* @throws EnforcerRuleException if we were doing an invalid SNAPSHOT/nonSNAPSHOT test
*/
- private boolean performSignatureCheck(final ProjectPomContext pomContext,
- final List<Path> tgzPaths, final List<Path> zipPaths) throws IOException, EnforcerRuleException {
+ private boolean performSignatureCheck(@Nonnull final ProjectPomContext pomContext,
+ @Nonnull final List<Path> tgzPaths, @Nonnull final List<Path> zipPaths) throws IOException, EnforcerRuleException {
boolean signatureResult = true;
if (checkSignatures) {
if (isGPGDataASnapshot() && !pomContext.isSnapShot()) {
@@ -365,8 +371,8 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
* @return if this worked (or was suppressed)
* @throws IOException if a file was not found or archive handling failed
*/
- private boolean performDependencyCheck(final ProjectPomContext pomContext,
- final List<Path> tgzPaths, final List<Path> zipPaths) throws IOException {
+ private boolean performDependencyCheck(@Nonnull final ProjectPomContext pomContext,
+ @Nonnull final List<Path> tgzPaths, @Nonnull final List<Path> zipPaths) throws IOException {
boolean depdendencyResult = true;
if (checkDependencies) {
try (final PrintWriter report =
@@ -418,7 +424,7 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
}
@Override
- public boolean isResultValid(final EnforcerRule a) {
+ public boolean isResultValid(@Nonnull final EnforcerRule a) {
return false;
}
@@ -453,7 +459,7 @@ public class JarEnforcer implements EnforcerRule, MavenLoader{
}
/** {@inheritDoc} */
- public Path downloadArtifact(final PomArtifact artifact, final String type) throws Exception {
+ @Nullable public Path downloadArtifact(final PomArtifact artifact, final String type) throws Exception {
final File file = downloadArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getClassifier(), type);
if (file == null) {
return null;
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/M2SigChecker.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/M2SigChecker.java
index 2ad5e4a..ad41c21 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/M2SigChecker.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/M2SigChecker.java
@@ -125,13 +125,14 @@ public class M2SigChecker extends BaseSigChecker {
return null;
}
final String artifactId = artifactDir.getFileName().toString();
+ assert artifactId!=null;
final Path groupDir = artifactDir.getParent();
if (groupDir == null) {
return null;
}
final String version = versionDir.getFileName().toString();
final String fileName = path.getFileName().toString();
- final String classifier;
+ @Nonnull final String classifier;
if (version.endsWith("SNAPSHOT")) {
// The version garnish isn't real version garnish:
// org/opensaml/opensaml-core/4.2.0-SNAPSHOT/opensaml-core-4.2.0-20220109.011317-203
@@ -140,12 +141,14 @@ public class M2SigChecker extends BaseSigChecker {
} else if (fileName.length() > artifactId.length() + 1 + version.length() + 4) {
// Need to be able to handle classifier
// org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noapp.jar
- classifier = fileName.substring(
+ String s = fileName.substring(
artifactId.length() // "sisu-guice"
+ 1 // "-"
+ version.length() // "2.1.7"
+ 1, // "-"
fileName.length() - 4); // ".jar"
+ assert s != null;
+ classifier =s;
} else {
// usual version:
// org/hsqldb/hrsqldb/2.5.1/hsqldb-2.5.1.jar
@@ -159,7 +162,9 @@ public class M2SigChecker extends BaseSigChecker {
if (buf.length() > 0) {
buf.deleteCharAt(buf.length()-1);
}
- return new PomArtifact(buf.toString(), artifactId, version, classifier);
+ final String group = buf.toString();
+ assert group != null;
+ return new PomArtifact(group, artifactId, version, classifier);
}
}
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/MavenLoader.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/MavenLoader.java
index bbf35d0..16c41ce 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/MavenLoader.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/MavenLoader.java
@@ -19,6 +19,8 @@ package net.shibboleth.mvn.enforcer.impl;
import java.nio.file.Path;
+import javax.annotation.Nullable;
+
/**
* Abstraction of a way to get hold of a maven artifact.
*/
@@ -30,5 +32,5 @@ public interface MavenLoader {
* @return the address of the artifact
* @throws Exception on an error
*/
- Path downloadArtifact(PomArtifact artifact, String type) throws Exception;
+ @Nullable Path downloadArtifact(PomArtifact artifact, String type) throws Exception;
}
\ No newline at end of file
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/ParsedPom.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/ParsedPom.java
index 5cd1ec9..705d37a 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/ParsedPom.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/ParsedPom.java
@@ -51,31 +51,33 @@ import net.shibboleth.utilities.java.support.xml.XMLParserException;
public class ParsedPom {
/** Log. */
- private final Logger log;
+ @Nonnull private final Logger log;
/** Compile dependencies - what we care about. */
- private final Map<String, DependencyPomArtifact> compileDependencies = new HashMap<>();
+ @Nonnull private final Map<String, DependencyPomArtifact> compileDependencies = new HashMap<>();
/** BOM dependencies. */
- private final Map<String, DependencyPomArtifact> bomDependencies = new HashMap<>();
+ @Nonnull private final Map<String, DependencyPomArtifact> bomDependencies = new HashMap<>();
/** Rum time dependencies. */
- private final Map<String, DependencyPomArtifact> runtimeDependencies = new HashMap<>();
+ @Nonnull private final Map<String, DependencyPomArtifact> runtimeDependencies = new HashMap<>();
/** Duplicate dependencies. */
- private final List<Pair<DependencyPomArtifact,DependencyPomArtifact>> duplicates = new ArrayList<>();
+ @Nonnull private final List<Pair<DependencyPomArtifact,DependencyPomArtifact>> duplicates = new ArrayList<>();
/** Generated artifacts. */
- private final Set<DependencyPomArtifact> generated = new HashSet<>();
+ @Nonnull private final Set<DependencyPomArtifact> generated = new HashSet<>();
/** Inherits dependencies. */
- private final Map<String, DependencyPomArtifact> managedDependencies;
+ @Nonnull private final Map<String, DependencyPomArtifact> managedDependencies;
/** Which the POM.*/
@Nonnull private final String sourcePomInfo;
/** Properties. */
- private final Properties properties = new Properties();
+ @Nonnull private final Properties properties = new Properties();
+
+ @Nonnull static final String UNSPECIFIED_GROUP = "unspecified-group";
/** Parent Pom .*/
private DependencyPomArtifact parent;
@@ -130,8 +132,14 @@ public class ParsedPom {
return;
} else if (parentPomProperties.isEmpty()) {
if (parent != null) {
- final ParsedPom parsedParent = new ParsedPom(parsers, pomLoader,
- pomLoader.downloadArtifact(parent, "pom"), parent.toString(), theLog, new Properties(), Collections.emptyMap());
+ final Path parentPomPath = pomLoader.downloadArtifact(parent, "pom");
+ if (parentPomPath == null) {
+ throw new XMLParserException("Could not resolve parent pom");
+ }
+ final String parentAsString = parent.toString();
+ assert parentAsString!=null;
+ final ParsedPom parsedParent = new ParsedPom(parsers, pomLoader, parentPomPath,
+ parentAsString, theLog, new Properties(), Collections.emptyMap());
final Properties props = parsedParent.getProperties();
for (final Object p:props.keySet()) {
String pName = (String) p;
@@ -161,7 +169,13 @@ public class ParsedPom {
}
}
for (final DependencyPomArtifact bom : bomDependencies.values()) {
- final ParsedPom parsedBom = new ParsedPom(parsers, pomLoader, pomLoader.downloadArtifact(bom, "pom"), bom.toString(),
+ final Path bomAsPath = pomLoader.downloadArtifact(bom, "pom");
+ if (bomAsPath == null) {
+ throw new XMLParserException("Could not resolve bom");
+ }
+ final String bomAsString = bom.toString();
+ assert bomAsString!=null;
+ final ParsedPom parsedBom = new ParsedPom(parsers, pomLoader, bomAsPath, bomAsString,
log, new Properties(), Collections.emptyMap());
for (DependencyPomArtifact dep : parsedBom.getManagedDependencies().values()) {
addWithCheck(dep, managedDependencies);
@@ -177,6 +191,7 @@ public class ParsedPom {
for (final Element modules: ElementSupport.getChildElementsByTagName(el, "modules")) {
for (final Element module: ElementSupport.getChildElementsByTagName(modules, "module")) {
final Path modulePath = pom.getParent().resolve(module.getTextContent()).resolve("pom.xml");
+ assert modulePath!=null;
if (Files.exists(modulePath)) {
final ParsedPom modulePom = new ParsedPom(parsers, pomLoader, modulePath,
module.getTextContent(), log, properties, managedDependencies);
@@ -222,7 +237,9 @@ public class ParsedPom {
remainingContents = remainingContents.substring(endIndex+1);
}
contents.append(remainingContents);
- return contents.toString();
+ final String result = contents.toString();
+ assert result != null;
+ return result;
}
/** Parse the dependency part of the pom.
@@ -317,6 +334,7 @@ public class ParsedPom {
/** Returns the Compile Dependencies.
* @return Returns the Compile Dependencies.
*/
+ @SuppressWarnings("null")
@Nonnull public Collection<DependencyPomArtifact> getCompileDependencies() {
return compileDependencies.values();
}
@@ -324,6 +342,7 @@ public class ParsedPom {
/** Returns the Runtime Dependencies.
* @return Returns the Runtime Dependencies.
*/
+ @SuppressWarnings("null")
@Nonnull public Collection<DependencyPomArtifact> getRuntimeDependencies() {
return runtimeDependencies.values();
}
@@ -395,17 +414,15 @@ public class ParsedPom {
* @param parentArtifact to inherit from
*/
public DependencyPomArtifact(final Element item, final @Nullable DependencyPomArtifact parentArtifact) {
- super(null, null, null);
+ super("", "", "");
final List<Element> grps = ElementSupport.getChildElementsByTagName(item, "groupId");
if (grps.size() > 0) {
groupId = getElementContent(grps.get(0));
} else if (parentArtifact != null) {
groupId = parentArtifact.getGroupId();
} else {
- if (grps.size() == 0) {
- log.error("{}: <groupId> should exist in dependency", sourcePomInfo);
- }
- groupId = null;
+ log.error("{}: <groupId> should exist in dependency", sourcePomInfo);
+ groupId = UNSPECIFIED_GROUP;
}
final List<Element> arts = ElementSupport.getChildElementsByTagName(item, "artifactId");
@@ -466,7 +483,7 @@ public class ParsedPom {
* @param ver the <version>
* @param clssfr the <classifier>
*/
- private DependencyPomArtifact(final String group, final String id, final String ver, final String clssfr) {
+ private DependencyPomArtifact(@Nonnull final String group, @Nonnull final String id, @Nonnull final String ver, @Nonnull final String clssfr) {
super(group, id, ver, clssfr);
}
@@ -488,7 +505,7 @@ public class ParsedPom {
* @param ver the version
* @return an amended artifact.
*/
- public final DependencyPomArtifact withVersion(String ver) {
+ public final DependencyPomArtifact withVersion(@Nonnull String ver) {
return new DependencyPomArtifact(groupId, artifactId, ver, classifier);
}
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/PomArtifact.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/PomArtifact.java
index 498fa71..5aa171b 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/PomArtifact.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/PomArtifact.java
@@ -44,7 +44,7 @@ public class PomArtifact implements Comparable<PomArtifact> {
* @param group the <groupId>
* @param ver the <version>
*/
- public PomArtifact(final String group, final String id, final String ver) {
+ public PomArtifact(@Nonnull final String group, @Nonnull final String id, @Nonnull final String ver) {
this(group, id, ver, "");
}
@@ -56,7 +56,7 @@ public class PomArtifact implements Comparable<PomArtifact> {
* @param ver the <version>
* @param clssfr the <classifier>
*/
- public PomArtifact(final String group, final String id, final String ver, final String clssfr) {
+ public PomArtifact(@Nonnull final String group, @Nonnull final String id, @Nonnull final String ver, @Nonnull final String clssfr) {
artifactId = id;
groupId = group;
version = ver;
@@ -67,35 +67,35 @@ public class PomArtifact implements Comparable<PomArtifact> {
/**
* @return Returns the groupId.
*/
- public final String getGroupId() {
+ @Nonnull public final String getGroupId() {
return groupId;
}
/**
* @return Returns the artifactId.
*/
- public final String getArtifactId() {
+ @Nonnull public final String getArtifactId() {
return artifactId;
}
/**
* @return Returns the version.
*/
- public final String getVersion() {
+ @Nonnull public final String getVersion() {
return version;
}
/**
* @return Returns the classifier.
*/
- public final String getClassifier() {
+ @Nonnull public final String getClassifier() {
return classifier;
}
/** Get the key we use in out maps.
* @return the key - derives from groupId and EntityId
*/
- public final String getMapKey() {
+ @Nonnull public final String getMapKey() {
return getGroupId()+"+"+getArtifactId();
}
@@ -122,7 +122,7 @@ public class PomArtifact implements Comparable<PomArtifact> {
}
/** {@inheritDoc} */
- public final String toString() {
+ @Nonnull public final String toString() {
return artifactId + "-" + classifier + version;
}
diff --git a/src/main/java/net/shibboleth/mvn/enforcer/impl/ProjectPomContext.java b/src/main/java/net/shibboleth/mvn/enforcer/impl/ProjectPomContext.java
index 14947f0..f324696 100644
--- a/src/main/java/net/shibboleth/mvn/enforcer/impl/ProjectPomContext.java
+++ b/src/main/java/net/shibboleth/mvn/enforcer/impl/ProjectPomContext.java
@@ -33,6 +33,7 @@ import java.util.Map.Entry;
import java.util.Properties;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.slf4j.Logger;
@@ -46,19 +47,19 @@ import net.shibboleth.utilities.java.support.xml.ParserPool;
public final class ProjectPomContext implements AutoCloseable {
/** Where the keyrings live when on the classpath. */
- public final static String CLASSPATH_ROOT = "net/shibboleth/mvn/enforcer/data/";
+ @Nonnull public final static String CLASSPATH_ROOT = "net/shibboleth/mvn/enforcer/data/";
/** Our log. */
- private final Logger log;
+ @Nonnull private final Logger log;
/** Parse for us to use. */
- private final ParserPool parserPool;
+ @Nonnull private final ParserPool parserPool;
/** Work space. Deleted on exit. */
- private final Path workingDir;
+ @Nonnull private final Path workingDir;
/** Source of extra data (like signatures. */
- private final ClassLoader enforcerLoader;
+ @Nonnull private final ClassLoader enforcerLoader;
/** The parsed idp-parent pom. */
private ParsedPom parentPom;
@@ -70,7 +71,7 @@ public final class ProjectPomContext implements AutoCloseable {
private boolean isSnapShot;
/** The injected thing that collects maven artifacts. */
- private final MavenLoader mavenLoader;
+ @Nonnull private final MavenLoader mavenLoader;
/** The ArtifactId to GroupId mapping. */
private final Map<String, String> artifactToGroup = new HashMap<>();
@@ -98,7 +99,9 @@ public final class ProjectPomContext implements AutoCloseable {
@Nonnull final List<String> clsfrs) throws IOException {
mavenLoader = Constraint.isNotNull(loader, "Loader must not be null");
log = Constraint.isNotNull(logger, "Logger must not be null");
- workingDir = Files.createTempDirectory("EnforcerCLI");
+ final Path wd = Files.createTempDirectory("EnforcerCLI");
+ assert wd != null;
+ workingDir = wd;
enforcerLoader = Constraint.isNotNull(classLoader, "Class Loader must not be null");;
parserPool = Constraint.isNotNull(pool, "Parse Pool must not be null");
extensionGarnish = Constraint.isNotNull(extensions, "Extensions must not be null");
@@ -130,7 +133,7 @@ public final class ProjectPomContext implements AutoCloseable {
* @param id the artifact id.
* @return the group
*/
- @Nonnull public String getGroup(final String id) {
+ @Nullable public String getGroup(final String id) {
final String group = artifactToGroup.get(id);
if (group == null) {
log.error("Could not resolve group for {}", id);
@@ -157,7 +160,7 @@ public final class ProjectPomContext implements AutoCloseable {
* @param pomPath Where the parent pom is.
* @return true if all worked OK, false otherwise
*/
- private boolean parsePom(final Path pomPath) {
+ private boolean parsePom(@Nonnull final Path pomPath) {
try {
parentPom = new ParsedPom(parserPool,
@@ -182,6 +185,10 @@ public final class ProjectPomContext implements AutoCloseable {
log.error("Could not download {}:", parentPom.getParent(), e);
return false;
}
+ if (parentPath == null) {
+ log.error("Could not download {}:", parentPom.getParent());
+ return false;
+ }
try {
projectParent = new ParsedPom(parserPool, mavenLoader,
parentPath, "parent pom.", log,
@@ -214,7 +221,7 @@ public final class ProjectPomContext implements AutoCloseable {
* @param pomPath where to load the pom from
* @return true if all worked OK, false otherwise
*/
- public boolean initialize(final Path pomPath) {
+ public boolean initialize(@Nonnull final Path pomPath) {
return parsePom(pomPath) && setupGroupMapping();
}
@@ -304,10 +311,12 @@ public final class ProjectPomContext implements AutoCloseable {
} else {
name = inName;
}
- String classifier = "";
+ @Nonnull String classifier = "";
for (final String it: classifiers) {
if (name.endsWith(it)) {
- classifier = it.substring(1);
+ final String s=it.substring(1);
+ assert s !=null;
+ classifier = s;
name = name.substring(0, name.length() - it.length());
break;
}
@@ -327,11 +336,13 @@ public final class ProjectPomContext implements AutoCloseable {
last = base.lastIndexOf("-");
base = name.substring(0, last);
}
- final String group = artifactToGroup.get(base);
+ String group = artifactToGroup.get(base);
if (group == null) {
log.error("Could not determine group for {} consider amending artifactMap.properties", inName);
+ group = ParsedPom.UNSPECIFIED_GROUP;
}
final String versionExtension = name.substring(last+1);
+ assert versionExtension!=null;
log.debug("Splitting {}: found {}:{}", inName, base, versionExtension);
return new PomArtifact(group, base, versionExtension, classifier);
}
diff --git a/src/test/java/net/shibboleth/mvn/enforcer/cli/impl/ListKeysCommandLineArguments.java b/src/test/java/net/shibboleth/mvn/enforcer/cli/impl/ListKeysCommandLineArguments.java
index d991c83..d958249 100644
--- a/src/test/java/net/shibboleth/mvn/enforcer/cli/impl/ListKeysCommandLineArguments.java
+++ b/src/test/java/net/shibboleth/mvn/enforcer/cli/impl/ListKeysCommandLineArguments.java
@@ -19,6 +19,7 @@ package net.shibboleth.mvn.enforcer.cli.impl;
import java.io.PrintStream;
import java.util.List;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
@@ -60,7 +61,7 @@ public class ListKeysCommandLineArguments extends AbstractCommandLineArguments {
}
@Override
- public synchronized Logger getLog() {
+ @Nonnull public synchronized Logger getLog() {
if (log == null) {
log = LoggerFactory.getLogger(ListKeysCommandLineArguments.class);
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list