Skip to content

Commit 49827bc

Browse files
committed
Refactor: url 인코딩 분리
1 parent cb169f8 commit 49827bc

File tree

3 files changed

+38
-16
lines changed

3 files changed

+38
-16
lines changed

src/main/java/com/young/shortenerurl/global/GlobalApiExceptionHandler.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import org.springframework.web.bind.annotation.ExceptionHandler;
1212
import org.springframework.web.bind.annotation.RestControllerAdvice;
1313

14-
import java.util.NoSuchElementException;
15-
1614
@RestControllerAdvice
1715
@Slf4j
1816
public 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);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
}

src/main/java/com/young/shortenerurl/url/application/UrlService.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,26 @@
22

33
import com.young.shortenerurl.url.application.dto.UrlCreateRequest;
44
import com.young.shortenerurl.url.application.dto.UrlInfoFindResponse;
5-
import com.young.shortenerurl.global.generator.UniqueKeyGenerator;
65
import com.young.shortenerurl.url.infrastructures.UrlRepository;
76
import com.young.shortenerurl.url.model.EncodedUrl;
87
import com.young.shortenerurl.url.model.Url;
9-
import com.young.shortenerurl.url.util.Encoder;
108
import org.springframework.stereotype.Service;
119
import org.springframework.transaction.annotation.Transactional;
1210

1311
@Service
1412
public 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(

0 commit comments

Comments
 (0)