File tree Expand file tree Collapse file tree 3 files changed +38
-16
lines changed
src/main/java/com/young/shortenerurl Expand file tree Collapse file tree 3 files changed +38
-16
lines changed Original file line number Diff line number Diff line change 1111import org .springframework .web .bind .annotation .ExceptionHandler ;
1212import org .springframework .web .bind .annotation .RestControllerAdvice ;
1313
14- import java .util .NoSuchElementException ;
15-
1614@ RestControllerAdvice
1715@ Slf4j
1816public class GlobalApiExceptionHandler {
@@ -39,13 +37,6 @@ public ResponseEntity<ErrorResponse> handleEntityNotFoundException(HttpServletRe
3937 return ResponseEntity .status (HttpStatus .NOT_FOUND ).body (errorResponse );
4038 }
4139
42- @ ExceptionHandler (NoSuchElementException .class )
43- public ResponseEntity <Void > handleNoSuchElementException (HttpServletRequest request , NoSuchElementException e ){
44- log .error ("Sever Exception Request URI {}: " , request .getRequestURI (), e );
45-
46- return ResponseEntity .internalServerError ().build ();
47- }
48-
4940 @ ExceptionHandler (Exception .class )
5041 public ResponseEntity <Void > handleException (HttpServletRequest request , Exception e ){
5142 log .error ("Sever Exception Request URI {}: " , request .getRequestURI (), e );
Original file line number Diff line number Diff line change 1+ package com .young .shortenerurl .url .application ;
2+
3+ import com .young .shortenerurl .global .generator .UniqueKeyGenerator ;
4+ import com .young .shortenerurl .url .model .EncodingType ;
5+ import com .young .shortenerurl .url .util .Encoder ;
6+ import org .springframework .stereotype .Component ;
7+ import org .springframework .util .Assert ;
8+
9+ import java .util .Map ;
10+ import java .util .stream .Collectors ;
11+ import java .util .stream .Stream ;
12+
13+ @ Component
14+ public class EncodingExecutor {
15+
16+ private final Map <String , Encoder > encoders ;
17+ private final UniqueKeyGenerator uniqueKeyGenerator ;
18+
19+ public EncodingExecutor (UniqueKeyGenerator uniqueKeyGenerator ) {
20+ this .encoders = Stream .of (EncodingType .values ())
21+ .collect (Collectors .toMap (Enum ::name , EncodingType ::getEncoder ));
22+
23+ this .uniqueKeyGenerator = uniqueKeyGenerator ;
24+ }
25+
26+ public String encode (EncodingType encodingType ){
27+ Assert .notNull (encodingType , "encodingType은 null이 들어오면 안됩니다." );
28+
29+ Encoder encoder = encoders .get (encodingType .name ());
30+
31+ return encoder .encode (uniqueKeyGenerator .generateKey ());
32+ }
33+
34+ }
Original file line number Diff line number Diff line change 22
33import com .young .shortenerurl .url .application .dto .UrlCreateRequest ;
44import com .young .shortenerurl .url .application .dto .UrlInfoFindResponse ;
5- import com .young .shortenerurl .global .generator .UniqueKeyGenerator ;
65import com .young .shortenerurl .url .infrastructures .UrlRepository ;
76import com .young .shortenerurl .url .model .EncodedUrl ;
87import com .young .shortenerurl .url .model .Url ;
9- import com .young .shortenerurl .url .util .Encoder ;
108import org .springframework .stereotype .Service ;
119import org .springframework .transaction .annotation .Transactional ;
1210
1311@ Service
1412public class UrlService {
1513
1614 private final UrlRepository urlRepository ;
17- private final UniqueKeyGenerator uniqueKeyGenerator ;
15+ private final EncodingExecutor encodingExecutor ;
1816
19- public UrlService (UrlRepository urlRepository , UniqueKeyGenerator uniqueKeyGenerator ) {
17+ public UrlService (UrlRepository urlRepository , EncodingExecutor encodingExecutor ) {
2018 this .urlRepository = urlRepository ;
21- this .uniqueKeyGenerator = uniqueKeyGenerator ;
19+ this .encodingExecutor = encodingExecutor ;
2220 }
2321
2422 @ Transactional
2523 public String createUrl (UrlCreateRequest request ) {
26- Encoder encoder = request .encodingType ().getEncoder ();
27- String encodedUrl = encoder .encode (uniqueKeyGenerator .generateKey ());
24+ String encodedUrl = encodingExecutor .encode (request .encodingType ());
2825
2926 Url savedUrl = urlRepository .findByOriginUrl (request .originUrl ()).orElseGet (() -> {
3027 Url url = new Url (
You can’t perform that action at this time.
0 commit comments