diff --git a/lombok.config b/lombok.config
new file mode 100644
index 00000000..8f7e8aa1
--- /dev/null
+++ b/lombok.config
@@ -0,0 +1 @@
+lombok.addLombokGeneratedAnnotation = true
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0c9e4056..8bcefeb3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,5 +64,10 @@
Java-WebSocket
1.5.2
+
+ org.projectlombok
+ lombok
+ RELEASE
+
diff --git a/src/main/java/org/p2p/solanaj/serum/Order.java b/src/main/java/org/p2p/solanaj/serum/Order.java
index e7fd5bc4..5cffea09 100644
--- a/src/main/java/org/p2p/solanaj/serum/Order.java
+++ b/src/main/java/org/p2p/solanaj/serum/Order.java
@@ -1,5 +1,6 @@
package org.p2p.solanaj.serum;
+import lombok.*;
import org.p2p.solanaj.core.PublicKey;
import java.security.SecureRandom;
@@ -7,6 +8,9 @@
/**
* Class that represents a Serum order.
*/
+@Builder
+@Getter
+@Setter(AccessLevel.PACKAGE)
public class Order {
private long price;
@@ -23,116 +27,6 @@ public class Order {
private SelfTradeBehaviorLayout selfTradeBehaviorLayout;
private boolean buy;
- public Order(float floatPrice, float floatQuantity) {
- this.floatPrice = floatPrice;
- this.floatQuantity = floatQuantity;
- this.clientOrderId = new SecureRandom().nextLong();
- }
-
- // constructor used by new orders
- public Order(float floatPrice, float floatQuantity, long clientOrderId) {
- this.floatPrice = floatPrice;
- this.floatQuantity = floatQuantity;
- this.clientOrderId = clientOrderId;
- }
-
- public Order(long price, long quantity, long clientOrderId, float floatPrice, float floatQuantity, PublicKey owner) {
- this.price = price;
- this.quantity = quantity;
- this.clientOrderId = clientOrderId;
- this.floatPrice = floatPrice;
- this.floatQuantity = floatQuantity;
- this.owner = owner;
- }
-
- public long getPrice() {
- return price;
- }
-
- public void setPrice(long price) {
- this.price = price;
- }
-
- public long getQuantity() {
- return quantity;
- }
-
- public void setQuantity(long quantity) {
- this.quantity = quantity;
- }
-
- public long getClientOrderId() {
- return clientOrderId;
- }
-
- public void setClientOrderId(long clientOrderId) {
- this.clientOrderId = clientOrderId;
- }
-
- public float getFloatPrice() {
- return floatPrice;
- }
-
- public void setFloatPrice(float floatPrice) {
- this.floatPrice = floatPrice;
- }
-
- public float getFloatQuantity() {
- return floatQuantity;
- }
-
- public void setFloatQuantity(float floatQuantity) {
- this.floatQuantity = floatQuantity;
- }
-
- public PublicKey getOwner() {
- return owner;
- }
-
- public void setOwner(PublicKey owner) {
- this.owner = owner;
- }
-
- public long getMaxQuoteQuantity() {
- return maxQuoteQuantity;
- }
-
- public void setMaxQuoteQuantity(long maxQuoteQuantity) {
- this.maxQuoteQuantity = maxQuoteQuantity;
- }
-
- public long getClientId() {
- return clientId;
- }
-
- public void setClientId(long clientId) {
- this.clientId = clientId;
- }
-
- public OrderTypeLayout getOrderTypeLayout() {
- return orderTypeLayout;
- }
-
- public void setOrderTypeLayout(OrderTypeLayout orderTypeLayout) {
- this.orderTypeLayout = orderTypeLayout;
- }
-
- public SelfTradeBehaviorLayout getSelfTradeBehaviorLayout() {
- return selfTradeBehaviorLayout;
- }
-
- public void setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout selfTradeBehaviorLayout) {
- this.selfTradeBehaviorLayout = selfTradeBehaviorLayout;
- }
-
- public boolean isBuy() {
- return buy;
- }
-
- public void setBuy(boolean buy) {
- this.buy = buy;
- }
-
@Override
public String toString() {
return "Order{" +
diff --git a/src/main/java/org/p2p/solanaj/serum/OrderBook.java b/src/main/java/org/p2p/solanaj/serum/OrderBook.java
index 3376f7f1..376d95ca 100644
--- a/src/main/java/org/p2p/solanaj/serum/OrderBook.java
+++ b/src/main/java/org/p2p/solanaj/serum/OrderBook.java
@@ -52,15 +52,14 @@ public ArrayList getOrders() {
slab.getSlabNodes().forEach(slabNode -> {
if (slabNode instanceof SlabLeafNode) {
SlabLeafNode slabLeafNode = (SlabLeafNode) slabNode;
- orders.add(
- new Order(
- slabLeafNode.getPrice(),
- slabLeafNode.getQuantity(),
- slabLeafNode.getClientOrderId(),
- SerumUtils.priceLotsToNumber(slabLeafNode.getPrice(), baseDecimals, quoteDecimals, baseLotSize, quoteLotSize),
- (float) ((slabLeafNode.getQuantity() * baseLotSize) / SerumUtils.getBaseSplTokenMultiplier(baseDecimals)),
- slabLeafNode.getOwner()
- )
+ orders.add(Order.builder()
+ .price(slabLeafNode.getPrice())
+ .quantity(slabLeafNode.getQuantity())
+ .clientOrderId(slabLeafNode.getClientOrderId())
+ .floatPrice(SerumUtils.priceLotsToNumber(slabLeafNode.getPrice(), baseDecimals, quoteDecimals, baseLotSize, quoteLotSize))
+ .floatQuantity((float) ((slabLeafNode.getQuantity() * baseLotSize) / SerumUtils.getBaseSplTokenMultiplier(baseDecimals)))
+ .owner(slabLeafNode.getOwner())
+ .build()
);
}
});
diff --git a/src/test/java/org/p2p/solanaj/core/OrderTest.java b/src/test/java/org/p2p/solanaj/core/OrderTest.java
index 532dc382..9b35c99f 100644
--- a/src/test/java/org/p2p/solanaj/core/OrderTest.java
+++ b/src/test/java/org/p2p/solanaj/core/OrderTest.java
@@ -64,15 +64,13 @@ public void placeOrderTest() {
long orderId = 11133711L;
- final Order order = new Order(
- 1337,
- 0.1f,
- orderId
- );
-
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(false);
+ final Order order = Order.builder()
+ .floatPrice(1337)
+ .floatQuantity(0.1f)
+ .clientOrderId(orderId)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(false).build();
// Place order
String transactionId = serumManager.placeOrder(
@@ -90,15 +88,13 @@ public void placeOrderTest() {
long usdcOrderId = 12321L;
- final Order usdcOrder = new Order(
- 0.001f,
- 0.1f,
- usdcOrderId
- );
-
- usdcOrder.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- usdcOrder.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- usdcOrder.setBuy(true);
+ final Order usdcOrder = Order.builder()
+ .floatPrice(0.001f)
+ .floatQuantity(0.1f)
+ .clientOrderId(usdcOrderId)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(true).build();
// Place order
String usdcTransactionId = serumManager.placeOrder(
@@ -310,15 +306,13 @@ public void placeOrderOxyTest() {
long orderId = 11133711L;
// 1 oxy bid @ $0.01
- final Order order = new Order(
- 0.01f,
- 1f,
- orderId
- );
-
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(true);
+ final Order order = Order.builder()
+ .floatPrice(0.01f)
+ .floatQuantity(1f)
+ .clientOrderId(orderId)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(true).build();
// Place order
String transactionId = serumManager.placeOrder(
@@ -397,15 +391,14 @@ public void iocPlaceOrderLqidTest() {
.build();
long orderId = 11133711L;
- final Order order = new Order(
- 0.20f,
- 0.01f,
- orderId
- );
- order.setOrderTypeLayout(OrderTypeLayout.IOC);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(true);
+ final Order order = Order.builder()
+ .floatPrice(0.20f)
+ .floatQuantity(0.01f)
+ .clientOrderId(orderId)
+ .orderTypeLayout(OrderTypeLayout.IOC)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(true).build();
// Place order
String transactionId = serumManager.placeOrder(
@@ -449,15 +442,13 @@ public void placeOrderSellMerTest() {
long orderId = 11133711L;
// 0.1 mer offer @ $1337
- final Order order = new Order(
- 1337,
- 0.1f,
- orderId
- );
-
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(false);
+ final Order order = Order.builder()
+ .floatPrice(1337)
+ .floatQuantity(0.1f)
+ .clientOrderId(orderId)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(false).build();
// Place order
String transactionId = serumManager.placeOrder(
@@ -537,16 +528,15 @@ public void placeOrderSellMerTestPreCalculatedOpenOrdersAccount() {
long orderId = 11133711L;
- // 0.1 mer offer @ $1337
- final Order order = new Order(
- 1337,
- 0.1f,
- orderId
- );
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(false);
+ // 0.1 mer offer @ $1337
+ final Order order = Order.builder()
+ .floatPrice(1337)
+ .floatQuantity(0.1f)
+ .clientOrderId(orderId)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(false).build();
final OpenOrdersAccount openOrdersAccount = SerumUtils.findOpenOrdersAccountForOwner(
client,
@@ -626,14 +616,12 @@ public void placeOrderRandomClientIdTest() {
account.getPublicKey()
);
- final Order order = new Order(
- 0.01f,
- 1
- );
-
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(true);
+ final Order order = Order.builder()
+ .floatPrice(0.01f)
+ .floatQuantity(1)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(true).build();
String transactionId = serumManager.placeOrder(
account,
@@ -695,13 +683,14 @@ public void place20OrderSRandomClientIdTest() {
Transaction transaction = new Transaction();
for (int i = 1; i <= 9; i++) {
- Order order = new Order(
- 0.01F + (0.01f * 1/2 * i),
- 10 - i
- );
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(true);
+ final Order order = Order.builder()
+ .floatPrice(0.01F + (0.01f * 1 / 2 * i))
+ .floatQuantity(10 - i)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(true)
+ .build();
+
serumManager.setOrderPrices(order, xrpBearUsdcMarket);
transaction.addInstruction(
@@ -752,13 +741,14 @@ public void place20OrderSRandomClientIdTest() {
transaction = new Transaction();
for (int i = 1; i <= 9; i++) {
- Order order = new Order(
- 0.01F + (0.01f * 1/2 * i),
- 10 - i
- );
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(true);
+ final Order order = Order.builder()
+ .floatPrice(0.01F + (0.01f * 1 / 2 * i))
+ .floatQuantity(10 - i)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(true)
+ .build();
+
serumManager.setOrderPrices(order, xrpBearUsdcMarket);
transaction.addInstruction(
@@ -826,10 +816,12 @@ public void srmFeeDiscountTest() {
account.getPublicKey()
);
- Order order = new Order(0.1f, 1);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setBuy(true);
+ final Order order = Order.builder()
+ .floatPrice(0.1f)
+ .floatQuantity(1)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .buy(true).build();
String txId = serumManager.placeOrder(
account,
@@ -877,15 +869,14 @@ public void spoofyTest() {
for (int i = 1; i <= 10; i++) {
long orderId = 10000L + i;
- final Order order = new Order(
- 0.01f * i,
- 1,
- orderId
- );
+ final Order order = Order.builder()
+ .floatPrice(0.01f * i)
+ .floatQuantity(1)
+ .clientOrderId(orderId)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(true).build();
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(true);
serumManager.setOrderPrices(order, xrpBearUsdcMarket);
transaction.addInstruction(
@@ -974,15 +965,13 @@ public void cancelOrderByClientIdAndSettleLoopedTest() {
for (int i = 1; i <= 15; i++) {
long orderId = 10000L + i;
- final Order order = new Order(
- 0.18f - (i * .001f),
- 0.01f,
- orderId
- );
-
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(true);
+ final Order order = Order.builder()
+ .floatPrice(0.18f - (i * .001f))
+ .floatQuantity(0.01f)
+ .clientOrderId(orderId)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(true).build();
// Place order 1
String transactionId = serumManager.placeOrder(
@@ -1050,15 +1039,13 @@ public void cancelOrderByClientIdAndSettleTest() {
long orderId = 10000L;
// 0.1 mer offer @ $1337
- final Order order = new Order(
- 1000f,
- 0.1f,
- orderId
- );
-
- order.setOrderTypeLayout(OrderTypeLayout.POST_ONLY);
- order.setSelfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE);
- order.setBuy(false);
+ final Order order = Order.builder()
+ .floatPrice(1000f)
+ .floatQuantity(0.1f)
+ .clientOrderId(orderId)
+ .orderTypeLayout(OrderTypeLayout.POST_ONLY)
+ .selfTradeBehaviorLayout(SelfTradeBehaviorLayout.DECREMENT_TAKE)
+ .buy(false).build();
// Place order 1
String transactionId = serumManager.placeOrder(