Skip to content

Commit bcf34e9

Browse files
committed
chore : config 패키지 변경, 전역 예외처리기 중복코드 삭제
1 parent 877952a commit bcf34e9

File tree

15 files changed

+110
-97
lines changed

15 files changed

+110
-97
lines changed

src/main/java/org/ezcode/codetest/application/game/dto/request/encounter/EncounterChoiceSaveRequest.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package org.ezcode.codetest.application.game.dto.request.encounter;
22

3+
import org.ezcode.codetest.common.validation.EnumValidator;
34
import org.ezcode.codetest.domain.game.model.encounter.EncounterChoice;
45
import org.ezcode.codetest.domain.game.model.encounter.RandomEncounter;
56
import org.ezcode.codetest.domain.game.model.encounter.RandomEncounterEffect;
67

78
import jakarta.validation.constraints.NotBlank;
89
import jakarta.validation.constraints.NotNull;
9-
import jakarta.validation.constraints.Pattern;
1010

1111
public record EncounterChoiceSaveRequest(
1212

@@ -17,17 +17,7 @@ public record EncounterChoiceSaveRequest(
1717
String choiceName,
1818

1919
@NotBlank(message = "인카운터 이펙트는 필수값입니다.")
20-
@Pattern(
21-
regexp = "^(BOSS_BATTLE_BAD"
22-
+ "|GAMBLING_GOOD|GAMBLING_BAD|BOSS_BATTLE_GOOD"
23-
+ "|STAT_INCREASE|STAT_DECREASE"
24-
+ "|AMBUSH_BANDITS_ESCAPE|AMBUSH_BANDITS_FIGHT"
25-
+ "|WILD_BEASTS_ESCAPE|WILD_BEASTS_ATTACK"
26-
+ "|ANCIENT_RUINS_TREASURE|ANCIENT_RUINS_TRAP"
27-
+ "|TREASURE_CACHE_FOUND|TREASURE_CACHE_EMPTY)$",
28-
flags = Pattern.Flag.CASE_INSENSITIVE,
29-
message = "effect 는 RandomEncounterEffect 의 유효한 값이어야 합니다."
30-
)
20+
@EnumValidator(enumClass = RandomEncounterEffect.class)
3121
String randomEncounterEffect,
3222

3323
@NotNull(message = "플레이어의 인카운터 선택지를 골라주세요.(true,false)")

src/main/java/org/ezcode/codetest/application/game/dto/request/encounter/RandomEncounterSaveRequest.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
package org.ezcode.codetest.application.game.dto.request.encounter;
22

3+
import org.ezcode.codetest.common.validation.EnumValidator;
34
import org.ezcode.codetest.domain.game.model.encounter.RandomEncounter;
45
import org.ezcode.codetest.domain.game.model.encounter.EncounterCategory;
56

67
import jakarta.validation.constraints.NotBlank;
7-
import jakarta.validation.constraints.Pattern;
88

99
public record RandomEncounterSaveRequest(
1010

1111
@NotBlank(message = "인카운터 카테고리는 필수입니다.")
12-
@Pattern(
13-
regexp = "^(BATTLE|MERCHANT|EVENT|EXPLORATION)$",
14-
flags = Pattern.Flag.CASE_INSENSITIVE,
15-
message = "인카운터 카테고리는 BATTLE, MERCHANT, EVENT, EXPLORATION 중 하나여야 합니다."
16-
)
12+
@EnumValidator(enumClass = EncounterCategory.class)
1713
String encounterCategory,
1814

1915
@NotBlank(message = "이름은 필수입니다.")
@@ -22,9 +18,7 @@ public record RandomEncounterSaveRequest(
2218
@NotBlank(message = "설명란은 필수입니다.")
2319
String encounterText
2420
) {
25-
2621
public RandomEncounter toRandomEncounter() {
27-
2822
return RandomEncounter.builder()
2923
.encounterCategory(EncounterCategory.valueOf(encounterCategory.trim().toUpperCase()))
3024
.activated(true)

src/main/java/org/ezcode/codetest/application/game/dto/request/item/AccessorySaveRequest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.ezcode.codetest.application.game.dto.request.item;
22

3+
import org.ezcode.codetest.common.validation.EnumValidator;
34
import org.ezcode.codetest.domain.game.model.item.Accessory;
45
import org.ezcode.codetest.domain.game.model.item.Item;
56
import org.ezcode.codetest.domain.game.model.item.AccessoryType;
@@ -10,35 +11,34 @@
1011
import jakarta.validation.constraints.Min;
1112
import jakarta.validation.constraints.NotBlank;
1213
import jakarta.validation.constraints.NotNull;
13-
import jakarta.validation.constraints.Pattern;
1414
import lombok.Getter;
1515

1616
@JsonTypeName("accessory")
1717
@Getter
1818
public class AccessorySaveRequest extends ItemSaveRequest {
1919

2020
@NotBlank
21-
@Pattern(
22-
regexp = "GRAPHIC_CARD|USB|KEYBOARD|MOUSE|CPU|MEMORY|DISK",
23-
flags = Pattern.Flag.CASE_INSENSITIVE,
24-
message = "악세서리 타입은 GRAPHIC_CARD, USB, KEYBOARD, MOUSE, CPU, MEMORY, DISK 중 하나여야 합니다."
25-
)
21+
@EnumValidator(enumClass = AccessoryType.class)
2622
private final String accessoryType;
2723

2824
@NotNull
2925
@Min(0)
3026
private final Integer speed;
3127

32-
@NotNull @Min(0)
28+
@NotNull
29+
@Min(0)
3330
private final Integer crit;
3431

35-
@NotNull @Min(0)
32+
@NotNull
33+
@Min(0)
3634
private final Integer stun;
3735

38-
@NotNull @Min(0)
36+
@NotNull
37+
@Min(0)
3938
private final Integer evasion;
4039

41-
@NotNull @Min(0)
40+
@NotNull
41+
@Min(0)
4242
private final Integer accuracy;
4343

4444
public AccessorySaveRequest(

src/main/java/org/ezcode/codetest/application/game/dto/request/item/DefenceSaveRequest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.ezcode.codetest.application.game.dto.request.item;
22

3+
import org.ezcode.codetest.common.validation.EnumValidator;
34
import org.ezcode.codetest.domain.game.model.item.Defence;
45
import org.ezcode.codetest.domain.game.model.item.Item;
56
import org.ezcode.codetest.domain.game.model.item.DefenceType;
@@ -10,19 +11,14 @@
1011
import jakarta.validation.constraints.Min;
1112
import jakarta.validation.constraints.NotBlank;
1213
import jakarta.validation.constraints.NotNull;
13-
import jakarta.validation.constraints.Pattern;
1414
import lombok.Getter;
1515

1616
@JsonTypeName("defence")
1717
@Getter
1818
public class DefenceSaveRequest extends ItemSaveRequest {
1919

2020
@NotBlank
21-
@Pattern(
22-
regexp = "ARMOR|SHIELD",
23-
flags = Pattern.Flag.CASE_INSENSITIVE,
24-
message = "방어구 타입은 ARMOR 또는 SHIELD 여야 합니다."
25-
)
21+
@EnumValidator(enumClass = DefenceType.class)
2622
private final String defenceType;
2723

2824
@NotNull

src/main/java/org/ezcode/codetest/application/game/dto/request/item/ItemGamblingRequest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
package org.ezcode.codetest.application.game.dto.request.item;
22

3+
import org.ezcode.codetest.common.validation.EnumValidator;
4+
import org.ezcode.codetest.domain.game.model.item.ItemCategory;
5+
36
import jakarta.validation.constraints.NotBlank;
4-
import jakarta.validation.constraints.Pattern;
57

68
public record ItemGamblingRequest(
79

810
@NotBlank(message = "아이템 타입을 결정해주세요(weapon, defence, accessory)")
9-
@Pattern(
10-
regexp = "weapon|defence|accessory",
11-
flags = Pattern.Flag.CASE_INSENSITIVE,
12-
message = "아이템 타입은 weapon, defence, accessory 중 하나여야 합니다."
13-
)
11+
@EnumValidator(enumClass = ItemCategory.class)
1412
String itemCategory
1513

1614
) {

src/main/java/org/ezcode/codetest/application/game/dto/request/item/ItemSaveRequest.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package org.ezcode.codetest.application.game.dto.request.item;
22

3+
import org.ezcode.codetest.common.validation.EnumValidator;
4+
import org.ezcode.codetest.domain.game.model.item.Grade;
35
import org.ezcode.codetest.domain.game.model.item.Item;
46

57
import com.fasterxml.jackson.annotation.JsonSubTypes;
68
import com.fasterxml.jackson.annotation.JsonTypeInfo;
79

810
import jakarta.validation.constraints.NotBlank;
9-
import jakarta.validation.constraints.Pattern;
1011
import lombok.Getter;
1112

1213
@JsonTypeInfo(
@@ -23,11 +24,7 @@
2324
public abstract class ItemSaveRequest {
2425

2526
@NotBlank
26-
@Pattern(
27-
regexp = "LEGENDARY|UNIQUE|RARE|UNCOMMON|COMMON|TRASH",
28-
flags = Pattern.Flag.CASE_INSENSITIVE,
29-
message = "아이템 등급은 LEGENDARY, UNIQUE, RARE, UNCOMMON, COMMON, TRASH 중 하나여야 합니다."
30-
)
27+
@EnumValidator(enumClass = Grade.class)
3128
private final String grade;
3229

3330
@NotBlank

src/main/java/org/ezcode/codetest/application/game/dto/request/item/WeaponSaveRequest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.ezcode.codetest.application.game.dto.request.item;
22

3+
import org.ezcode.codetest.common.validation.EnumValidator;
34
import org.ezcode.codetest.domain.game.model.item.Item;
45
import org.ezcode.codetest.domain.game.model.item.Weapon;
56
import org.ezcode.codetest.domain.game.model.item.Grade;
@@ -10,19 +11,14 @@
1011
import jakarta.validation.constraints.Min;
1112
import jakarta.validation.constraints.NotBlank;
1213
import jakarta.validation.constraints.NotNull;
13-
import jakarta.validation.constraints.Pattern;
1414
import lombok.Getter;
1515

1616
@JsonTypeName("weapon")
1717
@Getter
1818
public class WeaponSaveRequest extends ItemSaveRequest {
1919

2020
@NotBlank(message = "무기 타입은 공백일 수 없습니다.")
21-
@Pattern(
22-
regexp = "SHOT_GUN|RIFLE|PISTOL|LONG_SWORD|SHORT_SWORD|SPEAR|BOW|MAGIC_BOOK",
23-
flags = Pattern.Flag.CASE_INSENSITIVE,
24-
message = "무기 타입은 SHOT_GUN, RIFLE, PISTOL, LONG_SWORD, SHORT_SWORD, SPEAR, BOW, MAGIC_BOOK 중 하나여야 합니다."
25-
)
21+
@EnumValidator(enumClass = WeaponType.class)
2622
private final String weaponType;
2723

2824
@NotNull

src/main/java/org/ezcode/codetest/application/game/dto/request/skill/SkillSaveRequest.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,20 @@
11
package org.ezcode.codetest.application.game.dto.request.skill;
22

3+
import org.ezcode.codetest.common.validation.EnumValidator;
34
import org.ezcode.codetest.domain.game.model.skill.Skill;
45
import org.ezcode.codetest.domain.game.model.item.Grade;
56
import org.ezcode.codetest.domain.game.model.skill.SkillEffect;
67

78
import jakarta.validation.constraints.NotBlank;
8-
import jakarta.validation.constraints.Pattern;
99

1010
public record SkillSaveRequest(
1111

1212
@NotBlank(message = "스킬 이펙트를 입력해주세요.")
13-
@Pattern(
14-
regexp = "LIFE_STEAL|COUNTER_ATTACK|REFLEX_DAMAGE|HEAL|BURST_ATTACK|INSTANT_KILL|BLOODY_MESS|DEFENCE|ILLUSION|BUTTERFLY|PERFECT_AIM",
15-
flags = Pattern.Flag.CASE_INSENSITIVE,
16-
message = "스킬 이펙트는 LIFE_STEAL, COUNTER_ATTACK, REFLEX_DAMAGE, HEAL, BURST_ATTACK, INSTANT_KILL, BLOODY_MESS, DEFENCE, ILLUSION, BUTTERFLY, PERFECT_AIM 중 하나여야 합니다."
17-
)
13+
@EnumValidator(enumClass = SkillEffect.class)
1814
String skillEffect,
1915

2016
@NotBlank(message = "등급을 입력해주세요.")
21-
@Pattern(
22-
regexp = "LEGENDARY|UNIQUE|RARE|UNCOMMON|COMMON|TRASH",
23-
flags = Pattern.Flag.CASE_INSENSITIVE,
24-
message = "아이템 등급은 LEGENDARY, UNIQUE, RARE, UNCOMMON, COMMON, TRASH 중 하나여야 합니다."
25-
)
17+
@EnumValidator(enumClass = Grade.class)
2618
String grade,
2719

2820
@NotBlank(message = "스킬 이름을 입력해주세요.")
@@ -31,9 +23,7 @@ public record SkillSaveRequest(
3123
@NotBlank(message = "스킬 설명을 입력해주세요.")
3224
String skillDetails
3325
) {
34-
3526
public Skill toSkill() {
36-
3727
return Skill.builder()
3828
.skillEffect(SkillEffect.valueOf(skillEffect.trim().toUpperCase()))
3929
.grade(Grade.valueOf(grade.trim().toUpperCase()))

src/main/java/org/ezcode/codetest/common/base/exception/GlobalExceptionHandler.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,6 @@ public ResponseEntity<CommonResponse<Void>> handleMethodArgumentNotValidExceptio
3434
.body(CommonResponse.of(false, errorMessage, 400, null));
3535
}
3636

37-
@ExceptionHandler(BaseException.class)
38-
public ResponseEntity<CommonResponse<Void>> handleBaseException(
39-
BaseException e
40-
) {
41-
return ResponseEntity
42-
.status(e.getHttpStatus())
43-
.body(CommonResponse.from(e.getResponseCode()));
44-
}
45-
46-
4737
@ExceptionHandler(AuthorizationDeniedException.class)
4838
public ResponseEntity<CommonResponse<Void>> handleSseAuthorizationDenied(
4939
AuthorizationDeniedException ex,
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.ezcode.codetest.common.validation;
2+
3+
import jakarta.validation.Constraint;
4+
import jakarta.validation.Payload;
5+
6+
import java.lang.annotation.*;
7+
8+
@Constraint(validatedBy = EnumValidatorImpl.class)
9+
@Target({ ElementType.FIELD, ElementType.PARAMETER })
10+
@Retention(RetentionPolicy.RUNTIME)
11+
public @interface EnumValidator {
12+
13+
Class<? extends Enum<?>> enumClass();
14+
15+
String message() default "허용되지 않은 값입니다.";
16+
17+
Class<?>[] groups() default {};
18+
19+
Class<? extends Payload>[] payload() default {};
20+
}

0 commit comments

Comments
 (0)