Skip to content

Commit 4af354b

Browse files
committed
[grid] Remove dependency on guava from data package
1 parent 1aae7a3 commit 4af354b

11 files changed

+91
-64
lines changed

java/server/src/org/openqa/selenium/grid/data/BUILD.bazel

-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,5 @@ java_library(
1515
"//java/client/src/org/openqa/selenium/remote",
1616
"//java/server/src/org/openqa/selenium/events",
1717
"//java/server/src/org/openqa/selenium/grid/security",
18-
artifact("com.google.guava:guava"),
1918
],
2019
)

java/server/src/org/openqa/selenium/grid/data/CapabilityCount.java

+18-5
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,24 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import com.google.common.collect.ImmutableMap;
2120
import org.openqa.selenium.Capabilities;
2221
import org.openqa.selenium.json.JsonInput;
2322

23+
import java.util.ArrayList;
24+
import java.util.Collections;
2425
import java.util.HashMap;
2526
import java.util.Map;
27+
import java.util.stream.Collector;
2628

27-
import static com.google.common.collect.ImmutableList.toImmutableList;
29+
import static java.util.Collections.unmodifiableMap;
30+
import static java.util.stream.Collector.Characteristics.UNORDERED;
2831

2932
public class CapabilityCount {
3033

3134
private final Map<Capabilities, Integer> counts;
3235

3336
public CapabilityCount(Map<Capabilities, Integer> counts) {
34-
this.counts = ImmutableMap.copyOf(counts);
37+
this.counts = unmodifiableMap(new HashMap<>(counts));
3538
}
3639

3740
public Map<Capabilities, Integer> getCounts() {
@@ -40,8 +43,18 @@ public Map<Capabilities, Integer> getCounts() {
4043

4144
private Object toJson() {
4245
return counts.entrySet().stream()
43-
.map(entry -> ImmutableMap.of("capabilities", entry.getKey(), "count", entry.getValue()))
44-
.collect(toImmutableList());
46+
.map(entry -> {
47+
Map<Object, Object> toReturn = new HashMap<>();
48+
toReturn.put("capabilities", entry.getKey());
49+
toReturn.put("count", entry.getValue());
50+
return toReturn;
51+
})
52+
.collect(Collector.of(
53+
ArrayList::new,
54+
ArrayList::add,
55+
(l, r) -> { l.addAll(r); return l; },
56+
Collections::unmodifiableList,
57+
UNORDERED));
4558
}
4659

4760
private static CapabilityCount fromJson(JsonInput input) {

java/server/src/org/openqa/selenium/grid/data/CreateSessionRequest.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,22 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import static org.openqa.selenium.json.Json.MAP_TYPE;
21-
22-
import com.google.common.collect.ImmutableMap;
23-
import com.google.common.collect.ImmutableSet;
24-
import com.google.common.reflect.TypeToken;
25-
2620
import org.openqa.selenium.Capabilities;
2721
import org.openqa.selenium.ImmutableCapabilities;
2822
import org.openqa.selenium.internal.Require;
2923
import org.openqa.selenium.json.JsonInput;
24+
import org.openqa.selenium.json.TypeToken;
3025
import org.openqa.selenium.remote.Dialect;
3126

27+
import java.util.HashMap;
28+
import java.util.HashSet;
3229
import java.util.Map;
3330
import java.util.Set;
3431

32+
import static java.util.Collections.unmodifiableMap;
33+
import static java.util.Collections.unmodifiableSet;
34+
import static org.openqa.selenium.json.Json.MAP_TYPE;
35+
3536
public class CreateSessionRequest {
3637

3738
private final Set<Dialect> downstreamDialects;
@@ -42,10 +43,10 @@ public CreateSessionRequest(
4243
Set<Dialect> downstreamDialects,
4344
Capabilities capabilities,
4445
Map<String, Object> metadata) {
45-
this.downstreamDialects = ImmutableSet.copyOf(
46-
Require.nonNull("Downstream dialects", downstreamDialects));
46+
this.downstreamDialects = unmodifiableSet(new HashSet<>(
47+
Require.nonNull("Downstream dialects", downstreamDialects)));
4748
this.capabilities = ImmutableCapabilities.copyOf(Require.nonNull("Capabilities", capabilities));
48-
this.metadata = ImmutableMap.copyOf(Require.nonNull("Metadata", metadata));
49+
this.metadata = unmodifiableMap(new HashMap<>(Require.nonNull("Metadata", metadata)));
4950
}
5051

5152
public Set<Dialect> getDownstreamDialects() {
@@ -92,4 +93,4 @@ private static CreateSessionRequest fromJson(JsonInput input) {
9293
public String toString() {
9394
return String.format("<CreateSessionRequest with %s>", capabilities);
9495
}
95-
}
96+
}

java/server/src/org/openqa/selenium/grid/data/CreateSessionResponse.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import com.google.common.collect.ImmutableMap;
21-
2220
import org.openqa.selenium.internal.Require;
2321
import org.openqa.selenium.json.JsonInput;
2422

2523
import java.util.Base64;
2624
import java.util.Map;
25+
import java.util.TreeMap;
26+
27+
import static java.util.Collections.unmodifiableMap;
2728

2829
public class CreateSessionResponse {
2930

@@ -47,9 +48,10 @@ public byte[] getDownstreamEncodedResponse() {
4748
}
4849

4950
private Map<String, Object> toJson() {
50-
return ImmutableMap.of(
51-
"downstreamEncodedResponse", Base64.getEncoder().encodeToString(downstreamEncodedResponse),
52-
"session", session);
51+
Map<String, Object> toReturn = new TreeMap<>();
52+
toReturn.put("downstreamEncodedResponse", Base64.getEncoder().encodeToString(downstreamEncodedResponse));
53+
toReturn.put("session", session);
54+
return unmodifiableMap(toReturn);
5355
}
5456

5557
private static CreateSessionResponse fromJson(JsonInput input) {

java/server/src/org/openqa/selenium/grid/data/DistributorStatus.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,27 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import com.google.common.collect.ImmutableMap;
21-
import com.google.common.collect.ImmutableSet;
20+
import org.openqa.selenium.internal.Require;
2221
import org.openqa.selenium.json.JsonInput;
2322
import org.openqa.selenium.json.TypeToken;
2423

2524
import java.lang.reflect.Type;
2625
import java.util.Collection;
26+
import java.util.Collections;
27+
import java.util.HashSet;
2728
import java.util.Map;
2829
import java.util.Set;
2930

31+
import static java.util.Collections.unmodifiableSet;
32+
3033
public class DistributorStatus {
3134

3235
private static final Type NODE_STATUSES_TYPE = new TypeToken<Set<NodeStatus>>() {}.getType();
3336

3437
private final Set<NodeStatus> allNodes;
3538

3639
public DistributorStatus(Collection<NodeStatus> allNodes) {
37-
this.allNodes = ImmutableSet.copyOf(allNodes);
40+
this.allNodes = unmodifiableSet(new HashSet<>(Require.nonNull("nodes", allNodes)));
3841
}
3942

4043
public boolean hasCapacity() {
@@ -49,8 +52,7 @@ public Set<NodeStatus> getNodes() {
4952
}
5053

5154
private Map<String, Object> toJson() {
52-
return ImmutableMap.of(
53-
"nodes", getNodes());
55+
return Collections.singletonMap("nodes", getNodes());
5456
}
5557

5658
private static DistributorStatus fromJson(JsonInput input) {

java/server/src/org/openqa/selenium/grid/data/NewSessionErrorResponse.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import com.google.common.collect.ImmutableMap;
21-
2220
import org.openqa.selenium.internal.Require;
2321
import org.openqa.selenium.json.JsonInput;
2422

2523
import java.util.Map;
24+
import java.util.TreeMap;
25+
26+
import static java.util.Collections.unmodifiableMap;
2627

2728
public class NewSessionErrorResponse {
2829

@@ -43,9 +44,10 @@ public RequestId getRequestId() {
4344
}
4445

4546
private Map<String, Object> toJson() {
46-
return ImmutableMap.of(
47-
"message", message,
48-
"requestId", requestId);
47+
Map<String, Object> toReturn = new TreeMap<>();
48+
toReturn.put("message", message);
49+
toReturn.put("requestId", requestId);
50+
return unmodifiableMap(toReturn);
4951
}
5052

5153
private static NewSessionErrorResponse fromJson(JsonInput input) {

java/server/src/org/openqa/selenium/grid/data/NewSessionResponse.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import com.google.common.collect.ImmutableMap;
21-
2220
import org.openqa.selenium.internal.Require;
2321
import org.openqa.selenium.json.JsonInput;
2422

2523
import java.util.Base64;
24+
import java.util.LinkedHashMap;
2625
import java.util.Map;
2726

27+
import static java.util.Collections.unmodifiableMap;
28+
2829
public class NewSessionResponse {
2930

3031
private final RequestId requestId;
@@ -52,11 +53,11 @@ public byte[] getDownstreamEncodedResponse() {
5253
}
5354

5455
private Map<String, Object> toJson() {
55-
return ImmutableMap.of(
56-
"requestId", requestId,
57-
"session", session,
58-
"downstreamEncodedResponse", Base64.getEncoder().encodeToString(downstreamEncodedResponse)
59-
);
56+
Map<String, Object> toReturn = new LinkedHashMap<>();
57+
toReturn.put("requestId", requestId);
58+
toReturn.put("session", session);
59+
toReturn.put("downstreamEncodedResponse", Base64.getEncoder().encodeToString(downstreamEncodedResponse));
60+
return unmodifiableMap(toReturn);
6061
}
6162

6263
private static NewSessionResponse fromJson(JsonInput input) {

java/server/src/org/openqa/selenium/grid/data/NodeStatus.java

+14-16
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,21 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import com.google.common.collect.ImmutableMap;
21-
import com.google.common.collect.ImmutableSet;
2220
import org.openqa.selenium.Capabilities;
2321
import org.openqa.selenium.internal.Require;
2422
import org.openqa.selenium.json.JsonInput;
2523
import org.openqa.selenium.json.TypeToken;
2624

2725
import java.net.URI;
2826
import java.time.Instant;
27+
import java.util.HashSet;
2928
import java.util.Map;
3029
import java.util.Objects;
3130
import java.util.Set;
31+
import java.util.TreeMap;
32+
33+
import static java.util.Collections.unmodifiableMap;
34+
import static java.util.Collections.unmodifiableSet;
3235

3336
public class NodeStatus {
3437

@@ -49,14 +52,8 @@ public NodeStatus(
4952
this.maxSessionCount = Require.positive("Max session count",
5053
maxSessionCount,
5154
"Make sure that a driver is available on $PATH");
52-
this.slots = ImmutableSet.copyOf(Require.nonNull("Slots", slots));
55+
this.slots = unmodifiableSet(new HashSet<>(Require.nonNull("Slots", slots)));
5356
this.availability = Require.nonNull("Availability", availability);
54-
55-
ImmutableSet.Builder<Session> sessions = ImmutableSet.builder();
56-
57-
for (Slot slot : slots) {
58-
slot.getSession().ifPresent(sessions::add);
59-
}
6057
}
6158

6259
public boolean hasCapability(Capabilities caps) {
@@ -131,13 +128,14 @@ public int hashCode() {
131128
}
132129

133130
private Map<String, Object> toJson() {
134-
return new ImmutableMap.Builder<String, Object>()
135-
.put("id", nodeId)
136-
.put("uri", externalUri)
137-
.put("maxSessions", maxSessionCount)
138-
.put("slots", slots)
139-
.put("availability", availability)
140-
.build();
131+
Map<String, Object> toReturn = new TreeMap<>();
132+
toReturn.put("id", nodeId);
133+
toReturn.put("uri", externalUri);
134+
toReturn.put("maxSessions", maxSessionCount);
135+
toReturn.put("slots", slots);
136+
toReturn.put("availability", availability);
137+
138+
return unmodifiableMap(toReturn);
141139
}
142140

143141
public static NodeStatus fromJson(JsonInput input) {

java/server/src/org/openqa/selenium/grid/data/Session.java

+10-7
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import com.google.common.collect.ImmutableMap;
2120
import org.openqa.selenium.Capabilities;
2221
import org.openqa.selenium.ImmutableCapabilities;
2322
import org.openqa.selenium.internal.Require;
@@ -28,6 +27,9 @@
2827
import java.time.Instant;
2928
import java.util.Map;
3029
import java.util.Objects;
30+
import java.util.TreeMap;
31+
32+
import static java.util.Collections.unmodifiableMap;
3133

3234
/**
3335
* Represents a running instance of a WebDriver session. It is identified by a {@link SessionId}.
@@ -74,12 +76,13 @@ public Instant getStartTime() {
7476

7577
private Map<String, Object> toJson() {
7678
// Deliberately shaped like the return value for the W3C New Session command's return value.
77-
return ImmutableMap.of(
78-
"capabilities", getCapabilities(),
79-
"sessionId", getId().toString(),
80-
"stereotype", getStereotype(),
81-
"start", getStartTime(),
82-
"uri", getUri());
79+
Map<String, Object> toReturn = new TreeMap<>();
80+
toReturn.put("capabilities", getCapabilities());
81+
toReturn.put("sessionId", getId().toString());
82+
toReturn.put("stereotype", getStereotype());
83+
toReturn.put("start", getStartTime());
84+
toReturn.put("uri", getUri());
85+
return unmodifiableMap(toReturn);
8386
}
8487

8588
private static Session fromJson(JsonInput input) {

java/server/src/org/openqa/selenium/grid/data/Slot.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public Optional<Session> getSession() {
5959
}
6060

6161
public boolean isSupporting(Capabilities caps) {
62-
return slotMatcher.matches(caps, getStereotype());
62+
return slotMatcher.matches(getStereotype(), caps);
6363
}
6464

6565
@Override

java/server/src/org/openqa/selenium/grid/data/SlotId.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@
1717

1818
package org.openqa.selenium.grid.data;
1919

20-
import com.google.common.collect.ImmutableMap;
2120
import org.openqa.selenium.internal.Require;
2221
import org.openqa.selenium.json.JsonInput;
2322

23+
import java.util.Map;
2424
import java.util.Objects;
25+
import java.util.TreeMap;
2526
import java.util.UUID;
2627

28+
import static java.util.Collections.unmodifiableMap;
29+
2730
public class SlotId {
2831

2932
private final NodeId nodeId;
@@ -63,7 +66,10 @@ public int hashCode() {
6366
}
6467

6568
private Object toJson() {
66-
return ImmutableMap.of("hostId", nodeId, "id", uuid);
69+
Map<String, Object> toReturn = new TreeMap<>();
70+
toReturn.put("hostId", nodeId);
71+
toReturn.put("id", uuid);
72+
return unmodifiableMap(toReturn);
6773
}
6874

6975
private static SlotId fromJson(JsonInput input) {

0 commit comments

Comments
 (0)