Skip to content

Commit e65ce93

Browse files
authored
BAEL-5642 Using @NotNull as a method parameter (#12483)
* BAEL-5642 Using @NotNull as a method parameter * BAEL-5642 Add Spring Boot and bump spring and hibernate-validator versions
1 parent 09651da commit e65ce93

5 files changed

Lines changed: 122 additions & 3 deletions

File tree

javaxval/pom.xml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,19 @@
3434
<artifactId>spring-test</artifactId>
3535
<version>${org.springframework.version}</version>
3636
</dependency>
37+
<dependency>
38+
<groupId>org.springframework.boot</groupId>
39+
<artifactId>spring-boot-starter-validation</artifactId>
40+
<version>${spring.boot.version}</version>
41+
</dependency>
42+
<dependency>
43+
<groupId>org.springframework.boot</groupId>
44+
<artifactId>spring-boot-starter-test</artifactId>
45+
<version>${spring.boot.version}</version>
46+
<scope>test</scope>
47+
</dependency>
3748
</dependencies>
38-
49+
3950
<!-- uncomment in order to enable Hibernate Validator Anotation Processor -->
4051
<!-- <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId>
4152
<version>${maven.compiler.version}</version> <configuration> <source>${maven.compiler.source}</source>
@@ -46,13 +57,14 @@
4657
</plugin> </plugins> </build> -->
4758

4859
<properties>
49-
<hibernate-validator.version>6.0.13.Final</hibernate-validator.version>
60+
<hibernate-validator.version>6.2.3.Final</hibernate-validator.version>
5061
<hibernate-validator.ap.version>6.2.0.Final</hibernate-validator.ap.version>
5162
<maven.compiler.version>3.6.1</maven.compiler.version>
5263
<maven.compiler.source>1.8</maven.compiler.source>
5364
<maven.compiler.target>1.8</maven.compiler.target>
5465
<javax.el.version>3.0.0</javax.el.version>
55-
<org.springframework.version>5.0.2.RELEASE</org.springframework.version>
66+
<org.springframework.version>5.3.21</org.springframework.version>
67+
<spring.boot.version>2.7.1</spring.boot.version>
5668
</properties>
5769

5870
</project>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.baeldung.javaxval.notnull;
2+
3+
import javax.validation.Validation;
4+
import javax.validation.Validator;
5+
import javax.validation.ValidatorFactory;
6+
import javax.validation.constraints.NotNull;
7+
8+
public class NotNullMethodParameter {
9+
10+
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
11+
Validator validator = factory.getValidator();
12+
13+
public int doesNotValidateNotNull(@NotNull String myString) {
14+
return myString.length();
15+
}
16+
17+
public int validateNotNull(@NotNull String myString) {
18+
validator.validate(myString);
19+
return myString.length();
20+
}
21+
22+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.baeldung.javaxval.notnull;
2+
3+
import org.springframework.stereotype.Component;
4+
import org.springframework.validation.annotation.Validated;
5+
6+
import javax.validation.constraints.NotNull;
7+
8+
@Component
9+
@Validated
10+
public class ValidatingComponent {
11+
12+
public int validateNotNull(@NotNull String data)
13+
{
14+
return data.length();
15+
}
16+
17+
public int callAnnotatedMethod(String data) {
18+
return validateNotNull(data);
19+
}
20+
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.baeldung.javaxval.notnull;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.assertThrows;
6+
7+
class NotNullMethodParameterUnitTest {
8+
9+
private NotNullMethodParameter demo = new NotNullMethodParameter();
10+
11+
@Test
12+
public void givenNull_whenInvokedwithNoValidator_thenNullPointerException() {
13+
assertThrows(NullPointerException.class, () -> demo.doesNotValidateNotNull(null));
14+
}
15+
16+
@Test
17+
public void givenNull_whenInvokedWithValidator_thenIllegalArgumentException() {
18+
assertThrows(IllegalArgumentException.class, () -> demo.validateNotNull(null));
19+
}
20+
21+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.baeldung.javaxval.notnull;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
import org.springframework.boot.test.context.SpringBootTest;
7+
8+
import javax.validation.ConstraintViolation;
9+
import javax.validation.ConstraintViolationException;
10+
import javax.validation.constraints.NotNull;
11+
import java.util.Set;
12+
13+
import static org.hamcrest.MatcherAssert.assertThat;
14+
import static org.hamcrest.Matchers.is;
15+
import static org.junit.jupiter.api.Assertions.assertThrows;
16+
17+
@SpringBootTest
18+
class ValidatingComponentIntegrationTest {
19+
20+
@Autowired ValidatingComponent component;
21+
22+
@Test
23+
void givenValue_whenValidate_thenSuccess() {
24+
assertThat(component.validateNotNull("Not null!"), is(9));
25+
}
26+
27+
@Test
28+
void givenNull_whenValidate_thenConstraintViolationException() {
29+
ConstraintViolationException constraintViolationException = assertThrows(ConstraintViolationException.class, () -> component.validateNotNull(null));
30+
Set<ConstraintViolation<?>> constraintViolations = constraintViolationException.getConstraintViolations();
31+
assertThat(constraintViolations.iterator().next().getConstraintDescriptor().getAnnotation().annotationType(), is(NotNull.class));
32+
}
33+
34+
@Test
35+
void givenNull_whenOnlyCalledMethodHasAnnotation_thenNoValidation() {
36+
assertThrows(NullPointerException.class, () -> component.callAnnotatedMethod(null));
37+
}
38+
39+
@SpringBootApplication
40+
static class TestApplication {
41+
}
42+
43+
}

0 commit comments

Comments
 (0)