@Entity
@Convert(attributeName ="person", converter = JsonType.class)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SoccerPlayer { // Renamed class to SoccerPlayer instead of person
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotEmpty
@Size(min=5)
@Column(unique=true)
@Email
private String email;
@NotEmpty
private String password;
@NonNull
@Size(min = 2, max = 30, message = "Name (2 to 30 chars)")
private String name;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date dob;
@ManyToMany(fetch = EAGER)
private Collection<PersonRole> roles = new ArrayList<>();
@JdbcTypeCode(SqlTypes.JSON)
@Column(columnDefinition = "jsonb")
private Map<String, Map<String, Object>> stats = new HashMap<>();
public SoccerPlayer(String email, String password, String name, Date dob) {
this.email = email;
this.password = password;
this.name = name;
this.dob = dob;
}
// Method to calculate age based on date of birth
public int getAge() {
if (this.dob != null) {
LocalDate birthDay = this.dob.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
return Period.between(birthDay, LocalDate.now()).getYears();
}
return -1; // If date of birth is not set, return -1 to indicate invalid age
}
// Method to initialize and return an array of predefined SoccerPlayer instances
public static SoccerPlayer[] init() {
SoccerPlayer messi = new SoccerPlayer();
messi.setName("Lionel Messi");
messi.setEmail("lionel.messi@example.com");
messi.setPassword("Messi123!");
try {
Date d = new SimpleDateFormat("MM-dd-yyyy").parse("06-24-1987");
messi.setDob(d);
} catch (Exception e) {
// Handle parsing exception if needed
}
// Initialization for Cristiano Ronaldo
// Initialization for Neymar Jr.
SoccerPlayer[] players = {messi, ronaldo, neymar}; // Array containing initialized SoccerPlayer instances
return players; // Return the array of SoccerPlayer instances
}
// Method to display SoccerPlayer details
public static void main(String[] args) {
SoccerPlayer[] players = init(); // Obtain initialized SoccerPlayer instances
for (SoccerPlayer player : players) { // Iterate through each SoccerPlayer instance
System.out.println(player); // Print the details of each SoccerPlayer
}
}
Krishiv Mahendru
Link To Blog: https://krishiv111.github.io/liverpoolkm3//2023/12/19/JWTStudent_IPYNB_2_.html
Poster:
This is the Human Controller used on my groups thymeleaf lesson with added JWT
Link to java code: https://krishiv111.github.io/liverpoolkm3//2023/12/19/JWTStudent_IPYNB_2_.html
POSTMAN UNAUTHORIZED ERROR
Here is a basic class I did individually to show Individual knowledge of JWT with a soccer player class
SoccerPlayer.Java Class
` package com.nighthawk.spring_portfolio.mvc.person;
// Import statements...
@Entity @Convert(attributeName ="person", converter = JsonType.class) @Data @AllArgsConstructor @NoArgsConstructor public class SoccerPlayer { // Renamed class to SoccerPlayer instead of person
@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id;
} `
Controller Soccer Player With JWT features
package com.nighthawk.spring_portfolio.mvc.soccerplayer;
// Import statements...
@RestController @RequestMapping("/api/soccerplayer") public class SoccerPlayerApiController {
}