Skip to content

Commit 7767048

Browse files
committed
Implemented Java hashCode / equals contract in value entites to make them
better usable in HashMaps etc.
1 parent 5fe1a9b commit 7767048

File tree

6 files changed

+89
-4
lines changed

6 files changed

+89
-4
lines changed

src/main/java/de/morgner/cex/CexClient.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ private synchronized void throttle() {
240240
try {
241241

242242
// do not make more than 1 request per second
243-
while (System.currentTimeMillis() < lastCall + 1010) {
244-
Thread.sleep(100);
243+
while (System.currentTimeMillis() < (lastCall + 1001)) {
244+
Thread.sleep(10);
245245
}
246246

247247
// set timer for throttling
@@ -252,7 +252,7 @@ private synchronized void throttle() {
252252

253253
private Map<String, Object> toMap(final String key, final Object value) {
254254

255-
final Map<String, Object> map = new LinkedHashMap<String, Object>();
255+
final Map<String, Object> map = new LinkedHashMap<>();
256256

257257
map.put(key, value);
258258

@@ -261,7 +261,7 @@ private Map<String, Object> toMap(final String key, final Object value) {
261261

262262
private Map<String, Object> toMap(final String key1, final Object value1, final String key2, final Object value2, final String key3, final Object value3) {
263263

264-
final Map<String, Object> map = new LinkedHashMap<String, Object>();
264+
final Map<String, Object> map = new LinkedHashMap<>();
265265

266266
map.put(key1, value1);
267267
map.put(key2, value2);

src/main/java/de/morgner/cex/api/Amount.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,23 @@ public double getAvailable() {
3030
public double getOrders() {
3131
return orders;
3232
}
33+
34+
// ----- equals / hashCode contract -----
35+
@Override
36+
public int hashCode() {
37+
return Double.valueOf(available).hashCode() ^ Double.valueOf(orders).hashCode();
38+
}
39+
40+
@Override
41+
public boolean equals(final Object other) {
42+
43+
if (other instanceof Amount) {
44+
45+
return ((Amount)other).hashCode() == this.hashCode();
46+
}
47+
48+
return false;
49+
}
3350

3451
// ----- interface Comparable -----
3552
public int compareTo(Amount o) {

src/main/java/de/morgner/cex/api/Order.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,23 @@ public double getAmount() {
5757
public double getPending() {
5858
return pending;
5959
}
60+
61+
// ----- equals / hashCode contract -----
62+
@Override
63+
public int hashCode() {
64+
return type.hashCode() ^ Double.valueOf(price).hashCode() ^ Double.valueOf(amount).hashCode() ^ Double.valueOf(pending).hashCode();
65+
}
66+
67+
@Override
68+
public boolean equals(final Object other) {
69+
70+
if (other instanceof Order) {
71+
72+
return ((Order)other).hashCode() == this.hashCode();
73+
}
74+
75+
return false;
76+
}
6077

6178
// ----- interface Comparable -----
6279
public int compareTo(final Order o) {

src/main/java/de/morgner/cex/api/OrderBook.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,21 @@ public List<List<Double>> getBids() {
3535
public List<List<Double>> getAsks() {
3636
return asks;
3737
}
38+
39+
// ----- equals / hashCode contract -----
40+
@Override
41+
public int hashCode() {
42+
return Long.valueOf(timestamp).hashCode();
43+
}
44+
45+
@Override
46+
public boolean equals(final Object other) {
47+
48+
if (other instanceof OrderBook) {
49+
50+
return ((OrderBook)other).hashCode() == this.hashCode();
51+
}
52+
53+
return false;
54+
}
3855
}

src/main/java/de/morgner/cex/api/Ticker.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,21 @@ public double getBid() {
6161
public double getAsk() {
6262
return ask;
6363
}
64+
65+
// ----- equals / hashCode contract -----
66+
@Override
67+
public int hashCode() {
68+
return Long.valueOf(timestamp).hashCode();
69+
}
70+
71+
@Override
72+
public boolean equals(final Object other) {
73+
74+
if (other instanceof Trade) {
75+
76+
return ((Trade)other).hashCode() == this.hashCode();
77+
}
78+
79+
return false;
80+
}
6481
}

src/main/java/de/morgner/cex/api/Trade.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,23 @@ public double getPrice() {
3636
public long getDate() {
3737
return date;
3838
}
39+
40+
// ----- equals / hashCode contract -----
41+
@Override
42+
public int hashCode() {
43+
return Long.valueOf(tid).hashCode();
44+
}
45+
46+
@Override
47+
public boolean equals(final Object other) {
48+
49+
if (other instanceof Trade) {
50+
51+
return ((Trade)other).hashCode() == this.hashCode();
52+
}
53+
54+
return false;
55+
}
3956

4057
// ----- interface Comparable -----
4158
public int compareTo(Trade o) {

0 commit comments

Comments
 (0)