Skip to content

Commit 75621a2

Browse files
authored
SIS API v1.0.0 Deploy to Live (#45)
* All Classes Have Been Refactored | SIS-44 (#35) * Teacher Lesson API Has Been Created * Teacher and Student Responses Have Been Formatted * TeacherDegree Has Been Fixed * LoginRepository Has Been Fixed in Teacher Mail Service Impl Class * LessonCompulsoryOrElective Enum Class Has Been Moved to common Package * Empty Class Has Been Deleted * Another Response Formats Have Been Fixed * SisUtil/isNotExistIdInIdList Method Has Been Refactored * Unused @Setter Annotations Have Been Deleted * Created and Modified Date and UserID Fields Have Been Fixed * Student Requests Have Been Refactored * Student Info Converters Have Been Refactored and Updated * Student Services Have Been Refactored and Updated for Operation Info Request * StudentController and StudentControllerEndpoint Have Been Refactored and Updated for Operation Info Request * Sis Util Has Been Refactored * TeacherSaveInfoRequest Has Been Renamed and SisOperationInfoRequest Has Been Added to TeacherSaveInfoRequest * Hikari Configuration Codes Have Been Refactored * Sis Exception Codes Have Been Refactored * SisResponseUtil Class Has Been Refactored * SisLogMessageUtil Classes Have Been Refactored * SisSqlUtil Class Has Been Refactored * SisUtil Class Has Been Refactored * Password Service Classes Have Been Refactored * Officer Login Classes Have Been Refactored * LessonConverter Class Has Been Refactored * SisBaseResponse Has Been Refactored * SisOperationInfoRequest Has Been Refactored * Mail Services Have Been Refactored * Mail Entity Has Been Renamed * All Classes Have Been Refactored in Teacher Package * TeacherAcademicInfoRequest Class Has Been Refactored * notFoundAllIdsByStatus Method Has Been Added to SisWarnLogMessageUtil Class * All Classes Have Been Refactored in Login Package * All Classes Have Been Refactored in Parameter Package * Sis Response Classes Have Been Refactored * All Classes Have Been Refactored in Student Package * All Classes Have Been Refactored in Teacher Lesson Package * All Classes Have Been Refactored in Validation Package * Date Requests Has Been Fixed | SIS-74 (#36) * Date Patterns Have Been Refactored and Merged to Constants * SisBasePersonalInfoRequest/birthday Date Pattern Has Been Fixed * Officer API Has Been Created | SIS-23 (#37) * Officer Mapping Classes Have Been Created * Officer Entity Classes Have Been Created * Officer Status Enum Class Has Been Created * Officer Util Class Has Been Created * Officer Exception Class Has Been Created * Officer Request Classes Have Been Created * Officer Response Classes Have Been Created * Officer Personal Repository Classes Have Been Created * Officer Academic Repository Classes Have Been Created * Officer DTO Converter Classes Have Been Created * Officer Academic Service Classes Have Been Created * Officer Personal Service Classes Have Been Created * Officer Service Classes Have Been Created * Officer Controller Classes Have Been Created * FacultyID Validation Classes Have Been Created * getFormattedDate Method Has Been Added to SisUtil Class * errorWhenGettingAllIdsByFacultyId Method Has Been Added to SisErrorLogMessageUtil Class * foundAllIdsByFacultyId Method Has Been Added to SisInfoLogMessageUtil Class * notFoundAllIdsByFacultyId Method Has Been Added to SisWarnLogMessageUtil Class * Officer API Tag Has Been Added to SisSwaggerConfiguration * Officer Path Has Been Added to SisControllerEndpoint Class * Officer Mail Service Classes Have Been Created * Fixes and Code Refactor (#38) * Officer Mapping Classes Have Been Created * Officer Entity Classes Have Been Created * Officer Status Enum Class Has Been Created * Officer Util Class Has Been Created * Officer Exception Class Has Been Created * Officer Request Classes Have Been Created * Officer Response Classes Have Been Created * Officer Personal Repository Classes Have Been Created * Officer Academic Repository Classes Have Been Created * Officer DTO Converter Classes Have Been Created * Officer Academic Service Classes Have Been Created * Officer Personal Service Classes Have Been Created * Officer Service Classes Have Been Created * Officer Controller Classes Have Been Created * FacultyID Validation Classes Have Been Created * getFormattedDate Method Has Been Added to SisUtil Class * errorWhenGettingAllIdsByFacultyId Method Has Been Added to SisErrorLogMessageUtil Class * foundAllIdsByFacultyId Method Has Been Added to SisInfoLogMessageUtil Class * notFoundAllIdsByFacultyId Method Has Been Added to SisWarnLogMessageUtil Class * Officer API Tag Has Been Added to SisSwaggerConfiguration * Officer Path Has Been Added to SisControllerEndpoint Class * Officer Mail Service Classes Have Been Created * Student/Teacher Mail Service Classes Have Been Refactored * Response Classes Have Been Refactored * PasswordService Class Has Been Refactored * StudentLoginController Class Has Been Refactored * StudentLoginMapping Class Has Been Refactored * StudentLoginRepository Class Has Been Refactored * StudentLoginRepositoryImpl Class Has Been Refactored * TeacherLoginController Class Has Been Refactored * Login Info Entity Classes Have Been Refactored * TeacherLoginMapping Class Has Been Refactored * TeacherLoginRepository Class Has Been Refactored * OfficerLoginRepository Class Has Been Refactored * TeacherLoginRepositoryImpl Class Has Been Refactored * All Request Classes Have Been Refactored with Serializable * phoneNumber Has Been Added to OfficerAcademicInfoResponse * Dependency Versions Have Been Updated And Fixes (#39) * Dependency Versions Have Been Updated * Login Info Entity Classes Have Been Fixed * phoneNumber Has Been Added to OfficerAcademicInfoResponse * OfficerPersonalInfoConverter Class Has Been Refactored * Officer Login API | SIS-75 (#40) * sendFirstPasswordEmail Has Been Activated for Officer * Officer Login API Has Been Activated and Fixes * University API - Fixes - Refactor | SIS-50 (#41) * SisBaseEntity Class Has Been Refactored * SisBaseEntityWithId Class Has Been Deleted Because It's Unused * SisBaseResponse Class Has Been Refactored * OperationUserID Validation Classes Have Been Created * Faculty API Tag Has Been Added to SisSwaggerConfiguration Class * Faculty Endpoint Variable Has Been Added to SisControllerEndpoint Class * Student/Teacher/Officer Info Converter Classes Have Been Refactored * errorWhenGettingAllIds Method Has Been Added to SisErrorLogMessageUtil Class * foundAllIds Method Has Been Added to SisInfoLogMessageUtil Class * notFoundAllIds Method Has Been Added to SisWarnLogMessageUtil Class * SisOperationInfoRequest Class Has Been Refactored * FacultyMapping Class Has Been Created * FacultyUtil Class Has Been Created * FacultyStatus Class Has Been Created * FacultyEntity Class Has Been Created * Faculty Request Classes Have Been Created * FacultyResponse Class Has Been Created * FacultyException Class Has Been Created * Faculty Repository Classes Have Been Created * Faculty Service Classes Have Been Created * Faculty Controller Classes Have Been Created * OneOrZero Validation Has Been Created and NumberValidation Has Been Deleted Because It's Unused * integerToBoolean Method Has Been Added to SisUtil Class * Faculty/entity Package Move to Under Faculty/model Package * FacultyInfoConverter Class Has Been Refactored * Faculty/entity Package Move to Under Faculty/model Package * FacultyServiceImpl Class Has Been Refactored * Student/Teacher/Officer Info Converter Classes Have Been Refactored * DepartmentMapping Class Has Been Created * DepartmentStatus Enum Class Has Been Created * DepartmentEntity Class Has Been Created * Department Request Classes Have Been Created * DepartmentResponse Class Has Been Created * DepartmentInfoConverter Class Has Been Created * DepartmentException Class Has Been Created * DepartmentUtil Class Has Been Created * Department Repository Classes Have Been Created * Department Service Classes Have Been Created * Department Controller Classes Have Been Created * LessonMapping Class Has Been Created * Lesson Enums Have Been Created * LessonException Class Has Been Created * LessonUtil Class Has Been Created * LessonEntity Class Has Been Created * Lesson Request Classes Have Been Created * Lesson Response Class Has Been Refactored * LessonInfoConverter Class Has Been Refactored and Updated * Lesson Repository Classes Have Been Created * Lesson Service Classes Have Been Created * Lesson Controller Classes Have Been Created * TeacherLessonEntity Class Has Been Refactored and Updated * TeacherLessonConverter Class Has Been Refactored and Updated * TeacherLessonResponse Class Has Been Refactored and Updated * Teacher Lesson Repository Classes Have Been Refactored and Updated * Teacher Lesson Service Classes Have Been Refactored and Updated * Teacher Lesson Controller Classes Have Been Refactored and Updated * SisSwaggerConfiguration Class Has Been Refactored and Updated * SisControllerEndpoint Class Has Been Refactored and Updated * Teacher Lesson API Refactor | SIS-76 (#42) * Controller Endpoint Fixes | SIS-77 (#43) * Officer Controller Endpoints Have Been Fixed * Student Controller Endpoints Have Been Fixed * Teacher Controller Endpoints Have Been Fixed * API Responses Update | SIS-73 (#44) * FacultyResponse Have Been Added to Department API Response and Refactored * DepartmentServiceImpl Class Has Been Refactored * DepartmentResponse Have Been Added to Student API Response and Refactored * DepartmentResponse Have Been Added to Student API Response and Refactored * DepartmentResponse Have Been Added to Teacher API Response and Refactored * FacultyResponse Have Been Added to Officer API Response and Refactored * DepartmentResponse Have Been Added to Lesson API Response and Refactored * DepartmentResponse Have Been Added to Teacher Lesson API Response and Refactored * API Tags Have Been Refactored in SisSwaggerConfiguration
1 parent 87fe324 commit 75621a2

File tree

276 files changed

+8393
-1429
lines changed

Some content is hidden

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

276 files changed

+8393
-1429
lines changed

Diff for: pom.xml

+7-3
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
<version>2.5.6</version>
99
<relativePath/> <!-- lookup parent from repository -->
1010
</parent>
11+
1112
<groupId>com.graduation-project</groupId>
1213
<artifactId>student-information-system-be</artifactId>
1314
<version>v1.0.0</version>
1415
<packaging>war</packaging>
1516
<name>Student Information System</name>
1617
<description>Student Information System for Higher Education</description>
18+
1719
<developers>
1820
<developer>
1921
<name>Agit Rubar Demir</name>
@@ -32,9 +34,10 @@
3234
</roles>
3335
</developer>
3436
</developers>
37+
3538
<properties>
3639
<java.version>17</java.version>
37-
<log4j2.version>2.15.0</log4j2.version>
40+
<log4j2.version>2.17.1</log4j2.version>
3841
<mysql-connector-java.version>8.0.26</mysql-connector-java.version>
3942
<sql2o.version>1.6.0-RC3</sql2o.version>
4043
<hikari.version>5.0.0</hikari.version>
@@ -47,6 +50,7 @@
4750
<javax.mail.version>1.6.2</javax.mail.version>
4851
<spring-security-crypto.version>5.6.0</spring-security-crypto.version>
4952
</properties>
53+
5054
<dependencies>
5155
<dependency>
5256
<groupId>org.springframework.boot</groupId>
@@ -145,12 +149,12 @@
145149
<dependency>
146150
<groupId>ch.qos.logback</groupId>
147151
<artifactId>logback-core</artifactId>
148-
<version>1.2.6</version>
152+
<version>1.2.7</version>
149153
</dependency>
150154
<dependency>
151155
<groupId>ch.qos.logback</groupId>
152156
<artifactId>logback-classic</artifactId>
153-
<version>1.2.6</version>
157+
<version>1.2.7</version>
154158
</dependency>
155159
</dependencies>
156160

Diff for: src/main/java/com/graduationproject/studentinformationsystem/common/config/SisHikariConfigProfileDto.java

+15-16
Original file line numberDiff line numberDiff line change
@@ -2,51 +2,50 @@
22

33
import lombok.Builder;
44
import lombok.Getter;
5-
import lombok.Setter;
65
import lombok.extern.slf4j.Slf4j;
76
import org.springframework.util.StringUtils;
87

98
@Slf4j
109
@Getter
11-
@Setter
1210
@Builder
1311
public class SisHikariConfigProfileDto {
14-
private String username;
15-
private String password;
16-
private String maxPoolSize;
17-
private String tnsJdbcUrl;
18-
private String driverClassName;
19-
private String connectionTimeout;
20-
private String maxLifetime;
2112

22-
public static void checkProfileVariables(SisHikariConfigProfileDto hikariConfigProfile) {
13+
private final String username;
14+
private final String password;
15+
private final String maxPoolSize;
16+
private final String tnsJdbcUrl;
17+
private final String driverClassName;
18+
private final String connectionTimeout;
19+
private final String maxLifetime;
20+
21+
public static void checkProfileVariables(final SisHikariConfigProfileDto hikariConfigProfile) {
2322
if (!StringUtils.hasText(hikariConfigProfile.getUsername())) {
24-
String message = "Hikari username Cannot be Empty!";
23+
final String message = "Hikari username Cannot be Empty!";
2524
log.error(message);
2625
throw new NullPointerException(message);
2726
}
2827
if (!StringUtils.hasText(hikariConfigProfile.getPassword())) {
29-
String message = "Hikari password Cannot be Empty!";
28+
final String message = "Hikari password Cannot be Empty!";
3029
log.error(message);
3130
throw new NullPointerException(message);
3231
}
3332
if (!StringUtils.hasText(hikariConfigProfile.getTnsJdbcUrl())) {
34-
String message = "Hikari tnsJdbcUrl Cannot be Empty!";
33+
final String message = "Hikari tnsJdbcUrl Cannot be Empty!";
3534
log.error(message);
3635
throw new NullPointerException(message);
3736
}
3837
if (!StringUtils.hasText(hikariConfigProfile.getMaxPoolSize())) {
39-
String message = "Hikari maxPoolSize Cannot be Empty!";
38+
final String message = "Hikari maxPoolSize Cannot be Empty!";
4039
log.error(message);
4140
throw new NullPointerException(message);
4241
}
4342
if (!StringUtils.hasText(hikariConfigProfile.getConnectionTimeout())) {
44-
String message = "Hikari connectionTimeout Cannot be Empty!";
43+
final String message = "Hikari connectionTimeout Cannot be Empty!";
4544
log.error(message);
4645
throw new NullPointerException(message);
4746
}
4847
if (!StringUtils.hasText(hikariConfigProfile.getMaxLifetime())) {
49-
String message = "Hikari maxLifetime Cannot be Empty!";
48+
final String message = "Hikari maxLifetime Cannot be Empty!";
5049
log.error(message);
5150
throw new NullPointerException(message);
5251
}

Diff for: src/main/java/com/graduationproject/studentinformationsystem/common/config/SisHikariConfiguration.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ public class SisHikariConfiguration {
77
private SisHikariConfiguration() {
88
}
99

10-
public static HikariConfig getHikariConfigBaseValues(SisHikariConfigProfileDto hikariConfigProfileDto) {
11-
HikariConfig hikariConfig = new HikariConfig();
10+
public static HikariConfig getHikariConfigBaseValues(final SisHikariConfigProfileDto hikariConfigProfileDto) {
11+
final HikariConfig hikariConfig = new HikariConfig();
1212

1313
hikariConfig.setUsername(hikariConfigProfileDto.getUsername());
1414
hikariConfig.setPassword(hikariConfigProfileDto.getPassword());

Diff for: src/main/java/com/graduationproject/studentinformationsystem/common/config/SisMysqlHikariConfiguration.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ public class SisMysqlHikariConfiguration {
2525
public DataSource hikariMysql() {
2626
log.debug("Hikari MySQL Datasource Configuration Call Started!");
2727

28-
SisHikariConfigProfileDto hikariConfigMysqlProfile = getHikariConfigProfile(environment);
28+
final SisHikariConfigProfileDto hikariConfigMysqlProfile = getHikariConfigProfile(environment);
2929

3030
SisHikariConfigProfileDto.checkProfileVariables(hikariConfigMysqlProfile);
3131

32-
HikariConfig hikariConfigMysql = getHikariConfig(hikariConfigMysqlProfile);
32+
final HikariConfig hikariConfigMysql = getHikariConfig(hikariConfigMysqlProfile);
3333

3434
log.debug("Hikari MySQL Datasource Successfully Configured!");
3535
return new HikariDataSource(hikariConfigMysql);
@@ -40,7 +40,7 @@ Sql2o sql2oMysql(DataSource hikariMysql) {
4040
return new Sql2o(hikariMysql);
4141
}
4242

43-
private static SisHikariConfigProfileDto getHikariConfigProfile(Environment environment) {
43+
private static SisHikariConfigProfileDto getHikariConfigProfile(final Environment environment) {
4444
return SisHikariConfigProfileDto.builder()
4545
.username(environment.getProperty("hikariMysql.username"))
4646
.password(environment.getProperty("hikariMysql.password"))
@@ -51,7 +51,7 @@ private static SisHikariConfigProfileDto getHikariConfigProfile(Environment envi
5151
.maxLifetime(environment.getProperty("hikari.maxLifetime")).build();
5252
}
5353

54-
private static HikariConfig getHikariConfig(SisHikariConfigProfileDto hikariConfigProfileDto) {
54+
private static HikariConfig getHikariConfig(final SisHikariConfigProfileDto hikariConfigProfileDto) {
5555
return SisHikariConfiguration.getHikariConfigBaseValues(hikariConfigProfileDto);
5656
}
5757
}

Diff for: src/main/java/com/graduationproject/studentinformationsystem/common/config/SisSwaggerConfiguration.java

+13-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,14 @@
1313
@Configuration
1414
public class SisSwaggerConfiguration {
1515

16-
public static final String LOGIN_API_TAG = "Login Controller";
16+
public static final String FACULTY_API_TAG = "Faculty Controller";
17+
public static final String DEPARTMENT_API_TAG = "Department Controller";
18+
public static final String LESSON_API_TAG = "Lesson Controller";
1719
public static final String STUDENT_API_TAG = "Student Controller";
1820
public static final String TEACHER_API_TAG = "Teacher Controller";
21+
public static final String TEACHER_LESSON_API_TAG = "Teacher Lesson Controller";
22+
public static final String OFFICER_API_TAG = "Officer Controller";
23+
public static final String LOGIN_API_TAG = "Login Controller";
1924

2025
@Bean
2126
public Docket api() {
@@ -25,9 +30,14 @@ public Docket api() {
2530
.paths(PathSelectors.regex("/.*"))
2631
.build().apiInfo(apiEndPointsInfo())
2732
.tags(
28-
new Tag(LOGIN_API_TAG, "AUTH_STUDENT_LOGIN & AUTH_TEACHER_LOGIN & AUTH_OFFICER_LOGIN"),
33+
new Tag(FACULTY_API_TAG, "UNIV_FACULTY"),
34+
new Tag(DEPARTMENT_API_TAG, "UNIV_DEPARTMENT"),
35+
new Tag(LESSON_API_TAG, "UNIV_LESSON"),
2936
new Tag(STUDENT_API_TAG, "STUDENT_ACADEMIC_INFO & STUDENT_PERSONAL_INFO"),
30-
new Tag(TEACHER_API_TAG, "TEACHER_ACADEMIC_INFO & TEACHER_PERSONAL_INFO")
37+
new Tag(TEACHER_API_TAG, "TEACHER_ACADEMIC_INFO & TEACHER_PERSONAL_INFO"),
38+
new Tag(TEACHER_LESSON_API_TAG, "TEACHER_LESSON"),
39+
new Tag(OFFICER_API_TAG, "OFFICER_ACADEMIC_INFO & OFFICER_PERSONAL_INFO"),
40+
new Tag(LOGIN_API_TAG, "AUTH_STUDENT_LOGIN & AUTH_TEACHER_LOGIN & AUTH_OFFICER_LOGIN")
3141
);
3242
}
3343

Diff for: src/main/java/com/graduationproject/studentinformationsystem/common/model/dto/request/SisBasePersonalInfoRequest.java

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
11
package com.graduationproject.studentinformationsystem.common.model.dto.request;
22

3+
import com.fasterxml.jackson.annotation.JsonFormat;
34
import com.graduationproject.studentinformationsystem.common.util.validation.*;
45
import lombok.Getter;
5-
import org.springframework.format.annotation.DateTimeFormat;
66

77
import javax.validation.constraints.Email;
88
import javax.validation.constraints.NotNull;
9+
import java.io.Serial;
10+
import java.io.Serializable;
911
import java.util.Date;
1012

13+
import static com.graduationproject.studentinformationsystem.common.util.constant.SisConstants.DATE_PATTERN;
14+
1115
@Getter
12-
public abstract class SisBasePersonalInfoRequest {
16+
public abstract class SisBasePersonalInfoRequest implements Serializable {
17+
18+
@Serial
19+
private static final long serialVersionUID = 8140330376859399691L;
1320

1421
@TCNO
1522
@NotNull
@@ -37,7 +44,7 @@ public abstract class SisBasePersonalInfoRequest {
3744
// protected String profilePhotoUrl; // TODO: Added Profile Photo URL
3845

3946
@NotNull
40-
@DateTimeFormat
47+
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_PATTERN)
4148
protected Date birthday;
4249

4350
@Address
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.graduationproject.studentinformationsystem.common.model.dto.request;
2+
3+
import com.graduationproject.studentinformationsystem.common.util.validation.id.OperationUserID;
4+
import lombok.Getter;
5+
6+
import javax.validation.constraints.NotNull;
7+
import java.io.Serial;
8+
import java.io.Serializable;
9+
10+
@Getter
11+
public class SisOperationInfoRequest implements Serializable {
12+
13+
@Serial
14+
private static final long serialVersionUID = 4343452158117045893L;
15+
16+
@NotNull
17+
@OperationUserID
18+
private Long userId;
19+
}
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.graduationproject.studentinformationsystem.common.model.dto.response;
22

33
import lombok.Getter;
4-
5-
import java.util.Date;
4+
import lombok.experimental.SuperBuilder;
65

76
@Getter
7+
@SuperBuilder
88
public abstract class SisBaseResponse {
99

10-
protected Date createdDate;
1110
protected Long createdUserId;
12-
protected Date modifiedDate;
11+
protected String createdDate;
1312
protected Long modifiedUserId;
13+
protected String modifiedDate;
1414
}

Diff for: src/main/java/com/graduationproject/studentinformationsystem/common/model/entity/SisBaseEntity.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
@SuperBuilder
1010
public abstract class SisBaseEntity {
1111

12-
protected Date createdDate;
1312
protected Long createdUserId;
14-
protected Date modifiedDate;
13+
protected Date createdDate;
1514
protected Long modifiedUserId;
15+
protected Date modifiedDate;
1616
}

Diff for: src/main/java/com/graduationproject/studentinformationsystem/common/model/entity/SisBaseEntityWithId.java

-17
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.graduationproject.studentinformationsystem.common.model.entity;
2+
3+
import lombok.Getter;
4+
import lombok.experimental.SuperBuilder;
5+
6+
import java.util.Date;
7+
8+
@Getter
9+
@SuperBuilder
10+
public abstract class SisBaseLoginInfoEntity {
11+
12+
protected Integer failCounter;
13+
protected Date lastLoginDate;
14+
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
package com.graduationproject.studentinformationsystem.common.model.enums;
22

3+
import lombok.Getter;
4+
import lombok.RequiredArgsConstructor;
5+
6+
@Getter
7+
@RequiredArgsConstructor
38
public enum SisStatus {
4-
ACTIVE,
5-
PASSIVE,
6-
DELETED,
7-
ALL
9+
ACTIVE("Aktif"),
10+
PASSIVE("Pasif"),
11+
DELETED("Silinmiş"),
12+
ALL("Hepsi");
13+
14+
private final String name;
815
}

0 commit comments

Comments
 (0)