-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCardValidationService.java
More file actions
36 lines (27 loc) · 1.18 KB
/
CardValidationService.java
File metadata and controls
36 lines (27 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.example.services;
import com.example.constants.ServiceDelays;
import com.example.model.Card;
import com.example.model.CardValidationResult;
import com.example.model.TransactionRequest;
import com.example.repository.CardRepository;
import com.example.utils.DemoUtil;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import java.util.Optional;
@ApplicationScoped
public class CardValidationService { // NO LONGER implements ValidationService
private final CardRepository cardRepository;
private static final CardValidationResult.Failure NOT_FOUND = new CardValidationResult.Failure("Card Not Found");
@Inject
public CardValidationService(CardRepository cardRepository) {
this.cardRepository = cardRepository;
}
public CardValidationResult validate(TransactionRequest request) {
DemoUtil.simulateNetworkDelay(ServiceDelays.CARD_VALIDATION_DELAY);
String cardNumber = request.cardNumber();
// Lookup card in repository
return cardRepository.findByCardNumber(cardNumber)
.<CardValidationResult>map(CardValidationResult.Success::new)
.orElse(NOT_FOUND);
}
}