Skip to content

Commit

Permalink
fix: report the parameter name in the exception message (#10716)
Browse files Browse the repository at this point in the history
fixes #9994
  • Loading branch information
Denis authored and vaadin-bot committed Apr 20, 2021
1 parent 646d9a8 commit d714d04
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,13 @@ public Optional<Integer> getInteger(String parameterName) {
return Optional.empty();
}

return Optional.of(Integer.valueOf(value));
try {
return Optional.of(Integer.valueOf(value));
} catch (NumberFormatException e) {
throw new IllegalArgumentException(String.format(
"Couldn't parse '%s' parameter value '%s' as integer",
parameterName, value), e);
}
}

/**
Expand All @@ -152,7 +158,13 @@ public Optional<Long> getLong(String parameterName) {
return Optional.empty();
}

return Optional.of(Long.valueOf(value));
try {
return Optional.of(Long.valueOf(value));
} catch (NumberFormatException e) {
throw new IllegalArgumentException(String.format(
"Couldn't parse '%s' parameter value '%s' as long",
parameterName, value), e);
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,15 @@
import java.util.Arrays;

import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

public class RouteParametersTest {

@Rule
public ExpectedException exception = ExpectedException.none();

@Test
public void getters_provide_correct_values() {
RouteParameters parameters = getParameters();
Expand Down Expand Up @@ -78,48 +83,58 @@ public void getters_provide_empty_values() {
}

@Test
public void integer_getter_throws_exception() {
public void integer_getter_stringParameter_throws() {
RouteParameters parameters = getParameters();

try {
parameters.getInteger("string");
exception.expect(IllegalArgumentException.class);
exception.expectMessage(
"Couldn't parse 'string' parameter value 'foo' as integer");

Assert.fail("getInteger should not be able to format a string.");
} catch (NumberFormatException e) {
}
parameters.getInteger("string");
}

try {
parameters.getInteger("long");
@Test
public void integer_getter_longParameter_throws() {
RouteParameters parameters = getParameters();

Assert.fail("getInteger should not be able to format a long.");
} catch (NumberFormatException e) {
}
exception.expect(IllegalArgumentException.class);
exception.expectMessage(
"Couldn't parse 'long' parameter value '12345678900' as integer");

try {
parameters.getInteger("varargs");
parameters.getInteger("long");
}

Assert.fail("getInteger should not be able to format a varargs.");
} catch (NumberFormatException e) {
}
@Test
public void integer_getter_varaargsParameter_throws() {
RouteParameters parameters = getParameters();

exception.expect(IllegalArgumentException.class);
exception.expectMessage(
"Couldn't parse 'varargs' parameter value 'path/to/foo/bar' as integer");

parameters.getInteger("varargs");
}

@Test
public void long_getter_throws_exception() {
public void long_getter_varaargsParameter_throws() {
RouteParameters parameters = getParameters();

try {
parameters.getLong("string");
exception.expect(IllegalArgumentException.class);
exception.expectMessage(
"Couldn't parse 'varargs' parameter value 'path/to/foo/bar' as long");

Assert.fail("getInteger should not be able to format a string.");
} catch (NumberFormatException e) {
}
parameters.getLong("varargs");
}

try {
parameters.getLong("varargs");
@Test
public void long_getter_stringParameter_throws() {
RouteParameters parameters = getParameters();

Assert.fail("getInteger should not be able to format a varargs.");
} catch (NumberFormatException e) {
}
exception.expect(IllegalArgumentException.class);
exception.expectMessage(
"Couldn't parse 'string' parameter value 'foo' as long");

parameters.getLong("string");
}

@Test
Expand Down

0 comments on commit d714d04

Please sign in to comment.