Skip to content

Commit 4ca1f6c

Browse files
authored
Merge pull request #401 from wwelling/checkstyles
Add checkstyles
2 parents a979fed + 9e537b8 commit 4ca1f6c

File tree

216 files changed

+4233
-999
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

216 files changed

+4233
-999
lines changed

.github/pull_request_template.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
# Description
2-
> Please provide only as much detail as needed to justify the changes.
2+
> Please provide as much detail as needed to explain the changes.
33
44
# Supporting Material
5-
> Please provide the links necessary to support the claims made in description above.
5+
> Please provide any links, screenshots, etc. as necessary to support the description.
66
77
# Additional Comments
88
> Please provide any additional feedback here.
99
1010
# Helper Checklist (optional)
1111
> Please ensure the following has been completed.
1212
13-
- [ ] Changes reviewed and are acceptable to the best of your understanding.
14-
- [ ] Changes are documented where necessary.
15-
- [ ] Contacted code owners to evaluate.
13+
- [ ] Changes are documented to the best of your understanding.
14+
- [ ] Changes are reviewed and accepted.

checkstyles.xml

Lines changed: 336 additions & 0 deletions
Large diffs are not rendered by default.

pom.xml

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919

2020
<description>VIVO Scholars Middleware</description>
2121

22+
<organization>
23+
<name>Texas A&amp;M University Libraries</name>
24+
<url>https://library.tamu.edu</url>
25+
</organization>
26+
27+
<developers>
28+
29+
</developers>
30+
31+
<contributors>
32+
33+
</contributors>
34+
2235
<licenses>
2336
<license>
2437
<name>MIT</name>
@@ -29,9 +42,15 @@
2942

3043
<properties>
3144
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
45+
46+
<jena.version>4.9.0</jena.version>
3247
<liquibase.version>4.23.2</liquibase.version>
3348
<log4j2.version>2.17.2</log4j2.version>
34-
<jena.version>4.9.0</jena.version>
49+
50+
<maven-checkstyle-plugin.version>3.3.1</maven-checkstyle-plugin.version>
51+
52+
<springdoc.version>2.0.0</springdoc.version>
53+
3554
<solr.version>9.1.1</solr.version>
3655
</properties>
3756

@@ -106,7 +125,19 @@
106125
<groupId>org.springframework.data</groupId>
107126
<artifactId>spring-data-rest-hal-explorer</artifactId>
108127
</dependency>
109-
128+
129+
<dependency>
130+
<groupId>org.springdoc</groupId>
131+
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
132+
<version>${springdoc.version}</version>
133+
</dependency>
134+
135+
<dependency>
136+
<groupId>org.springdoc</groupId>
137+
<artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
138+
<version>${springdoc.version}</version>
139+
</dependency>
140+
110141
<dependency>
111142
<groupId>com.fasterxml.jackson.core</groupId>
112143
<artifactId>jackson-core</artifactId>
@@ -315,6 +346,31 @@
315346

316347
<plugins>
317348

349+
<plugin>
350+
<groupId>org.apache.maven.plugins</groupId>
351+
<artifactId>maven-checkstyle-plugin</artifactId>
352+
<version>${maven-checkstyle-plugin.version}</version>
353+
<configuration>
354+
<excludes>org/springframework/**/*</excludes>
355+
<configLocation>checkstyles.xml</configLocation>
356+
<consoleOutput>true</consoleOutput>
357+
<violationSeverity>warning</violationSeverity>
358+
<failOnViolation>true</failOnViolation>
359+
<failsOnError>true</failsOnError>
360+
<linkXRef>false</linkXRef>
361+
<skip>false</skip>
362+
</configuration>
363+
<executions>
364+
<execution>
365+
<id>validate</id>
366+
<phase>prepare-package</phase>
367+
<goals>
368+
<goal>check</goal>
369+
</goals>
370+
</execution>
371+
</executions>
372+
</plugin>
373+
318374
<!-- USE: mvn liquibase:generateChangeLog -->
319375
<plugin>
320376
<groupId>org.liquibase</groupId>

src/main/java/edu/tamu/scholars/middleware/MiddlewareApplication.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,27 @@
55
import static edu.tamu.scholars.middleware.auth.AuthConstants.PASSWORD_MIN_LENGTH;
66
import static edu.tamu.scholars.middleware.discovery.DiscoveryConstants.EXPORT_INDIVIDUAL_KEY;
77

8-
import java.util.TimeZone;
9-
108
import javax.annotation.PostConstruct;
119

10+
import java.util.TimeZone;
11+
1212
import org.springframework.beans.factory.annotation.Autowired;
1313
import org.springframework.boot.SpringApplication;
1414
import org.springframework.boot.autoconfigure.SpringBootApplication;
1515
import org.springframework.scheduling.annotation.EnableScheduling;
16+
import org.springframework.scheduling.annotation.Scheduled;
1617

1718
import edu.tamu.scholars.middleware.auth.config.AuthConfig;
1819
import edu.tamu.scholars.middleware.auth.config.PasswordConfig;
1920
import edu.tamu.scholars.middleware.config.model.ExportConfig;
2021
import edu.tamu.scholars.middleware.config.model.MiddlewareConfig;
22+
import edu.tamu.scholars.middleware.discovery.service.IndexService;
2123

24+
/**
25+
* Scholars middleware application and initialization.
26+
*
27+
* <p>Enables {@link Scheduled} annotation used in {@link IndexService}.</p>
28+
*/
2229
@EnableScheduling
2330
@SpringBootApplication
2431
public class MiddlewareApplication {

src/main/java/edu/tamu/scholars/middleware/auth/AuthConstants.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package edu.tamu.scholars.middleware.auth;
22

3+
import edu.tamu.scholars.middleware.MiddlewareApplication;
4+
import edu.tamu.scholars.middleware.auth.details.CustomUserDetails;
5+
6+
/**
7+
* Application initialized constants for use at runtime statically.
8+
* These are set in {@link MiddlewareApplication} and used in {@link CustomUserDetails}.
9+
*/
310
public class AuthConstants {
411

512
public static int PASSWORD_DURATION_IN_DAYS;

src/main/java/edu/tamu/scholars/middleware/auth/annotation/AvailableEmail.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@
33
import static java.lang.annotation.ElementType.FIELD;
44
import static java.lang.annotation.RetentionPolicy.RUNTIME;
55

6+
import javax.validation.Constraint;
7+
import javax.validation.Payload;
8+
69
import java.lang.annotation.Documented;
710
import java.lang.annotation.Retention;
811
import java.lang.annotation.Target;
912

10-
import javax.validation.Constraint;
11-
import javax.validation.Payload;
12-
13+
import edu.tamu.scholars.middleware.auth.model.User;
1314
import edu.tamu.scholars.middleware.auth.validator.EmailConstraintValidator;
1415

16+
/**
17+
* Annotation to declare validated {@link User} model email is available.
18+
*/
1519
@Documented
1620
@Target(FIELD)
1721
@Retention(RUNTIME)

src/main/java/edu/tamu/scholars/middleware/auth/annotation/ValidPassword.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@
33
import static java.lang.annotation.ElementType.TYPE;
44
import static java.lang.annotation.RetentionPolicy.RUNTIME;
55

6+
import javax.validation.Constraint;
7+
import javax.validation.Payload;
8+
69
import java.lang.annotation.Documented;
710
import java.lang.annotation.Retention;
811
import java.lang.annotation.Target;
912

10-
import javax.validation.Constraint;
11-
import javax.validation.Payload;
12-
13+
import edu.tamu.scholars.middleware.auth.model.User;
1314
import edu.tamu.scholars.middleware.auth.validator.PasswordConstraintValidator;
1415

16+
/**
17+
* Annotation to declare validated {@link User} model password is available.
18+
*/
1519
@Documented
1620
@Target(TYPE)
1721
@Retention(RUNTIME)

src/main/java/edu/tamu/scholars/middleware/auth/config/AuthConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
import org.springframework.boot.context.properties.ConfigurationProperties;
44
import org.springframework.stereotype.Component;
55

6+
/**
7+
* Injectable middleware configuration to specify properties relating to
8+
* authentication and authorization.
9+
*
10+
* <p>See `middleware.auth` in src/main/resources/application.yml.</p>
11+
*/
612
@Component
713
@ConfigurationProperties(prefix = "middleware.auth")
814
public class AuthConfig {

src/main/java/edu/tamu/scholars/middleware/auth/config/PasswordConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
import org.springframework.boot.context.properties.ConfigurationProperties;
44
import org.springframework.stereotype.Component;
55

6+
/**
7+
* Injectable middleware auth configuration to specify password properties.
8+
*
9+
* <p>See `middleware.auth.password` in src/main/resources/application.yml.</p>
10+
*/
611
@Component
712
@ConfigurationProperties(prefix = "middleware.auth.password")
813
public class PasswordConfig {

src/main/java/edu/tamu/scholars/middleware/auth/config/TokenConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
import org.springframework.boot.context.properties.ConfigurationProperties;
44
import org.springframework.stereotype.Component;
55

6+
/**
7+
* Injectable middleware auth configuration to specify token properties.
8+
*
9+
* <p>See `middleware.auth.token` in src/main/resources/application.yml.</p>
10+
*/
611
@Component
712
@ConfigurationProperties(prefix = "middleware.auth.token")
813
public class TokenConfig {

src/main/java/edu/tamu/scholars/middleware/auth/controller/AuthController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
import edu.tamu.scholars.middleware.auth.model.User;
88

9+
/**
10+
* Authentication controller returning the authenticated {@link User}.
11+
*/
912
@RestController
1013
public class AuthController {
1114

src/main/java/edu/tamu/scholars/middleware/auth/controller/RegistrationController.java

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
import java.io.IOException;
44

5+
import com.fasterxml.jackson.core.JsonParseException;
6+
import com.fasterxml.jackson.core.JsonProcessingException;
7+
import com.fasterxml.jackson.databind.JsonMappingException;
58
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.context.annotation.Lazy;
610
import org.springframework.http.ResponseEntity;
711
import org.springframework.validation.annotation.Validated;
812
import org.springframework.web.bind.annotation.GetMapping;
@@ -13,36 +17,53 @@
1317
import org.springframework.web.bind.annotation.RequestParam;
1418
import org.springframework.web.bind.annotation.RestController;
1519

16-
import com.fasterxml.jackson.core.JsonParseException;
17-
import com.fasterxml.jackson.core.JsonProcessingException;
18-
import com.fasterxml.jackson.databind.JsonMappingException;
19-
2020
import edu.tamu.scholars.middleware.auth.controller.exception.RegistrationException;
2121
import edu.tamu.scholars.middleware.auth.controller.request.Registration;
2222
import edu.tamu.scholars.middleware.auth.model.User;
2323
import edu.tamu.scholars.middleware.auth.service.RegistrationService;
2424
import edu.tamu.scholars.middleware.auth.validator.group.CompleteRegistration;
2525
import edu.tamu.scholars.middleware.auth.validator.group.SubmitRegistration;
2626

27+
/**
28+
* {@link User} registration controller.
29+
*
30+
* <p>
31+
* This controller provides ability to register a {@link User} through the following sequence of requests
32+
* </p>
33+
*
34+
* <ol>
35+
* <li>Submit registration request; create disabled user, send email confirmation with link and token</li>
36+
* <li>Confirm email registration; validate token and confirm user email</li>
37+
* <li>Complete registration; update and activates user</li>
38+
* </ol>
39+
*/
2740
@RestController
2841
@RequestMapping("/registration")
2942
public class RegistrationController {
3043

44+
@Lazy
3145
@Autowired
3246
private RegistrationService registrationService;
3347

3448
@PostMapping
35-
public ResponseEntity<Registration> submit(@RequestBody @Validated(SubmitRegistration.class) Registration registration) throws JsonProcessingException {
49+
public ResponseEntity<Registration> submit(
50+
@RequestBody @Validated(SubmitRegistration.class) Registration registration)
51+
throws JsonProcessingException {
3652
return ResponseEntity.ok(registrationService.submit(registration));
3753
}
3854

3955
@GetMapping
40-
public ResponseEntity<Registration> confirm(@RequestParam(required = true) String key) throws JsonParseException, JsonMappingException, IOException, RegistrationException {
56+
public ResponseEntity<Registration> confirm(
57+
@RequestParam(required = true) String key)
58+
throws JsonParseException, JsonMappingException, IOException, RegistrationException {
4159
return ResponseEntity.ok(registrationService.confirm(key));
4260
}
4361

4462
@PutMapping
45-
public ResponseEntity<User> complete(@RequestParam(required = true) String key, @RequestBody @Validated(CompleteRegistration.class) Registration registration) throws RegistrationException {
63+
public ResponseEntity<User> complete(
64+
@RequestParam(required = true) String key,
65+
@RequestBody @Validated(CompleteRegistration.class) Registration registration)
66+
throws RegistrationException {
4667
return ResponseEntity.ok(registrationService.complete(key, registration));
4768
}
4869

src/main/java/edu/tamu/scholars/middleware/auth/controller/advice/RegistrationAdvice.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,27 @@
1010
import org.springframework.web.bind.annotation.RestController;
1111

1212
import edu.tamu.scholars.middleware.auth.controller.RegistrationController;
13+
import edu.tamu.scholars.middleware.auth.model.User;
1314

15+
/**
16+
* {@link User} registration controller advice to handle bad requests.
17+
*/
1418
@RestController
1519
@ControllerAdvice(assignableTypes = { RegistrationController.class })
1620
public class RegistrationAdvice {
1721

22+
// TODO: add logging
23+
// TODO: handle registration exception and other exceptions thrown by the RegistrationController
24+
1825
@ResponseStatus(BAD_REQUEST)
1926
@ExceptionHandler(MethodArgumentNotValidException.class)
20-
public @ResponseBody String handleMethodArgumentNotValidException(MethodArgumentNotValidException exception) {
21-
return exception.getBindingResult().getAllErrors().get(0).getDefaultMessage();
27+
public @ResponseBody String handleMethodArgumentNotValidException(
28+
MethodArgumentNotValidException exception
29+
) {
30+
return exception.getBindingResult()
31+
.getAllErrors()
32+
.get(0)
33+
.getDefaultMessage();
2234
}
2335

2436
@ResponseStatus(BAD_REQUEST)

src/main/java/edu/tamu/scholars/middleware/auth/controller/exception/RegistrationException.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package edu.tamu.scholars.middleware.auth.controller.exception;
22

3+
import edu.tamu.scholars.middleware.auth.model.User;
4+
import edu.tamu.scholars.middleware.auth.service.RegistrationService;
5+
6+
/**
7+
* {@link User} registration exception used by {@link RegistrationService}.
8+
*/
39
public class RegistrationException extends Exception {
410

511
private static final long serialVersionUID = 7712767291119883628L;

0 commit comments

Comments
 (0)