Skip to content

Commit

Permalink
Prefer NullPointerExceptions for null arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
elharo committed Dec 5, 2024
1 parent 62586c2 commit e2e2d32
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 37 deletions.
23 changes: 16 additions & 7 deletions src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -534,11 +534,16 @@ protected static JavaVersion getJavadocVersion(File javadocExe)
* @return the version of the javadoc for the output, only digits and dots
* @throws PatternSyntaxException if the output doesn't match with the output pattern
* {@code (?s).*?[^a-zA-Z]([0-9]+\\.?[0-9]*)(\\.([0-9]+))?.*}.
* @throws IllegalArgumentException if the output is null
* @throws NullPointerException if the output is null
* @throws IllegalArgumentException if the output is empty
*/
protected static String extractJavadocVersion(String output) throws IllegalArgumentException {
if (output == null || output.isEmpty()) {
throw new IllegalArgumentException("The output could not be null.");
if (output == null) {
throw new NullPointerException("The output cannot be null.");
}

if (output.isEmpty()) {
throw new IllegalArgumentException("The output cannot be empty.");
}

Pattern pattern = EXTRACT_JAVADOC_VERSION_PATTERN;
Expand Down Expand Up @@ -591,14 +596,18 @@ protected static String extractJavadocVersion(String output) throws IllegalArgum
* </table>
*
* @param memory the memory to be parsed, not null.
* @return the memory parsed with a supported unit. If no unit specified in the <code>memory</code> parameter, the
* @return the memory parsed with a supported unit. If no unit is specified in the <code>memory</code> argument, the
* default unit is <code>m</code>. The units <code>g | gb</code> or <code>t | tb</code> will be converted in
* <code>m</code>.
* @throws IllegalArgumentException if the <code>memory</code> parameter is null or doesn't match any pattern.
* @throws NullPointerException if the <code>memory</code> argument is null
* @throws IllegalArgumentException if the <code>memory</code> argument doesn't match any pattern.
*/
protected static String parseJavadocMemory(String memory) throws IllegalArgumentException {
if (memory == null || memory.isEmpty()) {
throw new IllegalArgumentException("The memory could not be null.");
if (memory == null) {
throw new NullPointerException("The memory cannot be null.");
}
if (memory.isEmpty()) {
throw new IllegalArgumentException("The memory cannot be empty.");
}

Matcher m0 = PARSE_JAVADOC_MEMORY_PATTERN_0.matcher(memory);
Expand Down
69 changes: 39 additions & 30 deletions src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.PatternSyntaxException;

import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.plugins.javadoc.ProxyServer.AuthAsyncProxyServlet;
Expand All @@ -61,21 +60,31 @@
* @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
*/
public class JavadocUtilTest extends PlexusTestCase {
/**
* Method to test the javadoc version parsing.
*
*/
public void testParseJavadocVersion() {
String version = null;

public void testParseJavadocVersion_Null() {
try {
JavadocUtil.extractJavadocVersion(version);
JavadocUtil.extractJavadocVersion(null);
fail("Not catch null");
} catch (IllegalArgumentException e) {
assertTrue(true);
} catch (NullPointerException ex) {
assertNotNull(ex.getMessage());
}
}

public void testParseJavadocVersion_EmptyString() {
try {
JavadocUtil.extractJavadocVersion("");
fail("Not catch empty version");
} catch (IllegalArgumentException ex) {
assertNotNull(ex.getMessage());
}
}

/**
* Test the javadoc version parsing.
*/
public void testParseJavadocVersion() {
// Sun JDK 1.4
version = "java full version \"1.4.2_12-b03\"";
String version = "java full version \"1.4.2_12-b03\"";
assertEquals("1.4.2", JavadocUtil.extractJavadocVersion(version));

// Sun JDK 1.5
Expand Down Expand Up @@ -126,15 +135,6 @@ public void testParseJavadocVersion() {
version = "java full version \"1.4\"";
assertEquals("1.4", JavadocUtil.extractJavadocVersion(version));

version = "java full version \"1.A.B_07-164\"";
try {
JavadocUtil.extractJavadocVersion(version);
// does not fail since JEP 223 support addition
// assertTrue( "Not catch wrong pattern", false );
} catch (PatternSyntaxException e) {
assertTrue(true);
}

version = "SCO-UNIX-J2SE-1.5.0_09*FCS-UW714-OSR6*_20061114";
assertEquals("1.5.0", JavadocUtil.extractJavadocVersion(version));

Expand Down Expand Up @@ -163,20 +163,29 @@ public void testParseJavadocVersion() {
assertEquals("10.0.1", JavadocUtil.extractJavadocVersion(version));
}

/**
* Method to test the javadoc memory parsing.
*
*/
public void testParseJavadocMemory() {
String memory = null;
public void testParseJavadocMemory_null() {
try {
JavadocUtil.parseJavadocMemory(memory);
JavadocUtil.parseJavadocMemory(null);
fail("Not catch null");
} catch (IllegalArgumentException e) {
assertTrue(true);
} catch (NullPointerException ex) {
assertNotNull(ex.getMessage());
}
}

public void testParseJavadocMemory_empty() {
try {
JavadocUtil.parseJavadocMemory("");
fail("Not catch null");
} catch (IllegalArgumentException ex) {
assertNotNull(ex.getMessage());
}
}

memory = "128";
/**
* Method to test the javadoc memory parsing.
*/
public void testParseJavadocMemory() {
String memory = "128";
assertEquals(JavadocUtil.parseJavadocMemory(memory), "128m");

memory = "128k";
Expand Down

0 comments on commit e2e2d32

Please sign in to comment.