forked from lagom/online-auction-java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTransactionService.java
73 lines (55 loc) · 2.97 KB
/
TransactionService.java
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.example.auction.transaction.api;
import akka.Done;
import akka.NotUsed;
import com.example.auction.pagination.PaginatedSequence;
import com.example.auction.security.SecurityHeaderFilter;
import com.lightbend.lagom.javadsl.api.Descriptor;
import com.lightbend.lagom.javadsl.api.Service;
import com.lightbend.lagom.javadsl.api.ServiceCall;
import com.lightbend.lagom.javadsl.api.deser.PathParamSerializers;
import java.util.Optional;
import java.util.UUID;
import static com.lightbend.lagom.javadsl.api.Service.named;
import static com.lightbend.lagom.javadsl.api.Service.pathCall;
/**
* The transaction services.
*
* Handles the transaction of negotiating delivery info and making payment of an item that has completed an auction.
*
* A transaction is created when an AuctionFinished event is received
*/
public interface TransactionService extends Service {
String TOPIC_ID = "transaction-TransactionEvent";
//ServiceCall<TransactionMessage, Done> sendMessage(UUID itemId);
ServiceCall<DeliveryInfo, Done> submitDeliveryDetails(UUID itemId);
ServiceCall<Integer, Done> setDeliveryPrice(UUID itemId);
ServiceCall<NotUsed, Done> approveDeliveryDetails(UUID itemId);
ServiceCall<PaymentInfo, Done> submitPaymentDetails(UUID itemId);
ServiceCall<PaymentInfoStatus, Done> submitPaymentStatus(UUID itemId);
//ServiceCall<NotUsed, Done> dispatchItem(UUID itemId);
//ServiceCall<NotUsed, Done> receiveItem(UUID itemId);
//ServiceCall<NotUsed, Done> initiateRefund(UUID itemId);
ServiceCall<NotUsed, TransactionInfo> getTransaction(UUID itemId);
ServiceCall<NotUsed, PaginatedSequence<TransactionSummary>> getTransactionsForUser(
TransactionInfoStatus status, Optional<Integer> pageNo, Optional<Integer> pageSize);
/**
* The transaction events topic.
*/
//Topic<TransactionEvent> transactionEvents();
@Override
default Descriptor descriptor() {
return named("transaction").withCalls(
pathCall("/api/transaction/:id/deliverydetails", this::submitDeliveryDetails),
pathCall("/api/transaction/:id/deliveryprice", this::setDeliveryPrice),
pathCall("/api/transaction/:id/approvedelivery", this::approveDeliveryDetails),
pathCall("/api/transaction/:id/paymentdetails", this::submitPaymentDetails),
pathCall("/api/transaction/:id/paymentstatus", this::submitPaymentStatus),
pathCall("/api/transaction/:id", this::getTransaction),
pathCall("/api/transaction?status&pageNo&pageSize", this::getTransactionsForUser)
).withPathParamSerializer(
UUID.class, PathParamSerializers.required("UUID", UUID::fromString, UUID::toString)
).withPathParamSerializer(
TransactionInfoStatus.class, PathParamSerializers.required("TransactionInfoStatus", TransactionInfoStatus::valueOf, TransactionInfoStatus::toString)
).withHeaderFilter(SecurityHeaderFilter.INSTANCE);
}
}