use of com.hazelcast.internal.json.JsonValue in project hazelcast by hazelcast.
the class JsonParser_Test method parse_failsOnTooDeeplyNestedMixedObject.
@Test
public void parse_failsOnTooDeeplyNestedMixedObject() {
JsonValue value = new JsonObject();
for (int i = 0; i < 1001; i++) {
value = i % 2 == 0 ? new JsonArray().add(value) : new JsonObject().add("foo", value);
}
final String input = value.toString();
ParseException exception = assertException(ParseException.class, new RunnableEx() {
public void run() throws IOException {
parser.parse(input);
}
});
assertEquals("Nesting too deep at 1:4002", exception.getMessage());
}
use of com.hazelcast.internal.json.JsonValue in project hazelcast by hazelcast.
the class AzureComputeApi method parsePublicIpResponse.
private Map<String, String> parsePublicIpResponse(String response) {
Map<String, String> publicIps = new HashMap<>();
for (JsonValue item : toJsonArray(Json.parse(response).asObject().get("value"))) {
String id = item.asObject().getString("id", null);
String ip = toJsonObject(item.asObject().get("properties")).getString("ipAddress", null);
if (!isNullOrEmptyAfterTrim(ip)) {
publicIps.put(id, ip);
}
}
return publicIps;
}
use of com.hazelcast.internal.json.JsonValue in project hazelcast by hazelcast.
the class KubernetesApiEndpointProvider method extractNodes.
public Map<EndpointAddress, String> extractNodes(JsonObject endpointsListJson, List<EndpointAddress> privateAddresses) {
Map<EndpointAddress, String> result = new HashMap<>();
Set<EndpointAddress> left = new HashSet<>(privateAddresses);
for (JsonValue item : toJsonArray(endpointsListJson.get("items"))) {
for (JsonValue subset : toJsonArray(item.asObject().get("subsets"))) {
JsonObject subsetObject = subset.asObject();
List<Integer> ports = new ArrayList<>();
for (JsonValue port : toJsonArray(subsetObject.get("ports"))) {
ports.add(port.asObject().get("port").asInt());
}
Map<EndpointAddress, String> nodes = new HashMap<>();
nodes.putAll(extractNodes(subsetObject.get("addresses"), ports));
nodes.putAll(extractNodes(subsetObject.get("notReadyAddresses"), ports));
for (Map.Entry<EndpointAddress, String> nodeEntry : nodes.entrySet()) {
EndpointAddress address = nodeEntry.getKey();
if (privateAddresses.contains(address)) {
result.put(address, nodes.get(address));
left.remove(address);
}
}
}
}
if (!left.isEmpty()) {
// At least one Hazelcast Member POD does not have 'nodeName' assigned.
throw noNodeNameAssignedException(left);
}
return result;
}
use of com.hazelcast.internal.json.JsonValue in project hazelcast by hazelcast.
the class KubernetesApiEndpointSlicesProvider method extractServices.
public Map<EndpointAddress, String> extractServices(JsonObject endpointsListJson, List<EndpointAddress> privateAddresses) {
Map<EndpointAddress, String> result = new HashMap<>();
Set<EndpointAddress> left = new HashSet<>(privateAddresses);
for (JsonValue item : toJsonArray(endpointsListJson.get("items"))) {
JsonValue ownerRefsValue = item.asObject().get("metadata").asObject().get("ownerReferences");
if (ownerRefsValue == null || ownerRefsValue.asArray().size() > 1 || !ownerRefsValue.asArray().get(0).asObject().get("kind").asString().equals("Service")) {
continue;
}
String service = ownerRefsValue.asArray().get(0).asObject().get("name").asString();
List<Endpoint> endpoints = parseEndpointSlices(item);
// Service must point to exactly one endpoint address, otherwise the public IP would be ambiguous.
if (endpoints.size() == 1) {
EndpointAddress address = endpoints.get(0).getPrivateAddress();
if (privateAddresses.contains(address)) {
// If multiple services match the pod, then match service and pod names
if (!result.containsKey(address) || service.equals(extractTargetRefName(item))) {
result.put(address, service);
}
left.remove(address);
}
}
}
if (!left.isEmpty()) {
// At least one Hazelcast Member POD does not have a corresponding service.
throw noCorrespondingServicesException(left);
}
return result;
}
use of com.hazelcast.internal.json.JsonValue in project hazelcast by hazelcast.
the class HazelcastCloudDiscoveryTest method testJsonResponseParse.
@Test
public void testJsonResponseParse() throws IOException {
JsonValue jsonResponse = Json.parse("[{\"private-address\":\"100.96.5.1\",\"public-address\":\"10.113.44.139:31115\"}," + "{\"private-address\":\"100.96.4.2\",\"public-address\":\"10.113.44.130:31115\"} ]");
Map<Address, Address> privatePublicMap = HazelcastCloudDiscovery.parseJsonResponse(jsonResponse);
assertEquals(2, privatePublicMap.size());
assertEquals(new Address("10.113.44.139", 31115), privatePublicMap.get(new Address("100.96.5.1", 31115)));
assertEquals(new Address("10.113.44.130", 31115), privatePublicMap.get(new Address("100.96.4.2", 31115)));
}
Aggregations