Skip to content

Commit

Permalink
Make it easier to deserialise from a Map to ImmutableCapabilities
Browse files Browse the repository at this point in the history
We do this by sacrificing a certain amount of type safety
in the constructor, but we then enforce this at run time.
  • Loading branch information
shs96c committed Feb 13, 2019
1 parent 0fe5f4d commit 0e8def4
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,13 @@ public ImmutableCapabilities(Capabilities other) {
this(other.asMap());
}

public ImmutableCapabilities(Map<String, ?> capabilities) {
capabilities.forEach(this::setCapability);
public ImmutableCapabilities(Map<?, ?> capabilities) {
capabilities.forEach((key, value) -> {
if (!(key instanceof String)) {
throw new IllegalArgumentException("Key values must be strings");
}
setCapability(String.valueOf(key), value);
});
}

public static ImmutableCapabilities copyOf(Capabilities capabilities) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,8 @@ private static Map<Capabilities, Integer> readCapacityNamed(
ImmutableMap.Builder<Capabilities, Integer> capacity = ImmutableMap.builder();
kind.forEach(obj -> {
Map<?, ?> cap = (Map<?, ?>) obj;
//noinspection unchecked
capacity.put(
new ImmutableCapabilities((Map<String, Object>) cap.get("capabilities")),
new ImmutableCapabilities((Map<?, ?>) cap.get("capabilities")),
((Number) cap.get("count")).intValue());
});

Expand Down
4 changes: 1 addition & 3 deletions java/server/src/org/openqa/selenium/grid/data/Session.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,7 @@ private Map<String, Object> toJson() {
private static Session fromJson(Map<String, Object> raw) throws URISyntaxException {
SessionId id = new SessionId((String) raw.get("sessionId"));
URI uri = new URI((String) raw.get("uri"));
@SuppressWarnings("unchecked")
Map<String, Object> rawCaps = (Map<String, Object>) raw.get("capabilities");
Capabilities caps = new ImmutableCapabilities(rawCaps);
Capabilities caps = new ImmutableCapabilities((Map<?, ?>) raw.get("capabilities"));

return new Session(id, uri, caps);
}
Expand Down

0 comments on commit 0e8def4

Please sign in to comment.