@Override public T apply(Maybe<JsonElement> input) { if (input.isAbsent()) return defaultValue; return cast(expected).apply(input.get()); } };
@Override public T apply(Maybe<JsonElement> input) { if (input.isAbsent()) return defaultValue; return cast(expected).apply(input.get()); } }
public static <T> Function<Maybe<JsonElement>, T> castM(final Class<T> expected) { return Functionals.chain(MaybeFunctions.<JsonElement>get(), cast(expected)); }
public static <T> Function<HttpToolResponse, T> jsonContents(String[] elements, Class<T> expected) { return Functionals.chain(jsonContents(), JsonFunctions.walk(elements), JsonFunctions.cast(expected)); }
Object[] result = (Object[]) Array.newInstance(componentType, array.size()); for (int i = 0; i < array.size(); i++) { result[i] = cast(componentType).apply(array.get(i));
@Test public void testWalk1() { JsonElement pop = JsonFunctions.walk("europe", "france", "population").apply(europeMap()); Assert.assertEquals( (int)JsonFunctions.cast(Integer.class).apply(pop), 80*1000*1000 ); }
@Test public void testWalkN() { JsonElement pop = JsonFunctions.walkN("europe", "france", "population").apply( europeMap() ); Assert.assertEquals( (int)JsonFunctions.cast(Integer.class).apply(pop), 80*1000*1000 ); }
public void testWalkNWrong2() { JsonElement m = JsonFunctions.walkN("europe", "spain", "barcelona").apply( europeMap() ); String n = JsonFunctions.cast(String.class).apply(m); Assert.assertNull(n); }
@Test public void testWalk2() { String weather = Functionals.chain( JsonFunctions.walk("europe.uk.edinburgh.weather"), JsonFunctions.cast(String.class) ).apply(europeMap()); Assert.assertEquals(weather, "wet"); }
@Test(expectedExceptions=NoSuchElementException.class) public void testWalkWrong() { Functionals.chain( JsonFunctions.walk("europe", "spain", "barcelona"), JsonFunctions.cast(String.class) ).apply(europeMap()); }
@Override public ManagementNodeState call(ConfigBag parameters) { HighAvailabilityMode mode = parameters.get(MODE); Preconditions.checkNotNull(mode, MODE.getName() + " parameter is required"); EntityHttpClient httpClient = ((BrooklynNode)entity()).http(); HttpToolResponse resp = httpClient.post("/v1/server/ha/state", ImmutableMap.of("Brooklyn-Allow-Non-Master-Access", "true"), ImmutableMap.of("mode", mode.toString())); if (resp.getResponseCode() == HttpStatus.SC_OK) { Function<HttpToolResponse, ManagementNodeState> parseRespone = Functionals.chain( Functionals.chain(HttpValueFunctions.jsonContents(), JsonFunctions.cast(String.class)), Enums.fromStringFunction(ManagementNodeState.class)); return parseRespone.apply(resp); } else { throw new IllegalStateException("Unexpected response code: " + resp.getResponseCode() + "\n" + resp.getContentAsString()); } } }
private <T> T parseJson(String json, List<String> elements, Class<T> clazz) { Function<String, T> func = Functionals.chain( JsonFunctions.asJson(), JsonFunctions.walk(elements), JsonFunctions.cast(clazz)); return func.apply(json); }
private <T> List<T> parseJsonList(String json, List<String> elements, Class<T> clazz) { Function<String, List<T>> func = Functionals.chain( JsonFunctions.asJson(), JsonFunctions.forEach(Functionals.chain( JsonFunctions.walk(elements), JsonFunctions.cast(clazz)))); return func.apply(json); } }
@Override public void connectSensors() { super.connectSensors(); connectServiceUpIsRunning(); HostAndPort hostAndPort = BrooklynAccessUtils.getBrooklynAccessibleAddress(this, sensors().get(DOCKER_REGISTRY_PORT)); sensors().set(Attributes.MAIN_URI, URI.create("https://" + hostAndPort + "/v2")); httpFeed = HttpFeed.builder() .entity(this) .period(Duration.seconds(3)) .baseUri(getAttribute(Attributes.MAIN_URI)) .poll(new HttpPollConfig<Boolean>(Attributes.SERVICE_UP) .onSuccess(Functions.constant(true)) .onFailureOrException(Functions.constant(false))) .poll(new HttpPollConfig<List<String>>(DOCKER_REGISTRY_CATALOG) .suburl("/_catalog") .onSuccess(Functionals.chain( HttpValueFunctions.jsonContents(), JsonFunctions.walk("repositories"), JsonFunctions.forEach(JsonFunctions.cast(String.class)))) .onFailureOrException(Functions.constant(Collections.<String>emptyList()))) .build(); }
.poll(new HttpPollConfig<Boolean>(WEB_CONSOLE_ACCESSIBLE) .suburl("/v1/server/healthy") .onSuccess(Functionals.chain(HttpValueFunctions.jsonContents(), JsonFunctions.cast(Boolean.class))) .poll(new HttpPollConfig<ManagementNodeState>(MANAGEMENT_NODE_STATE) .suburl("/v1/server/ha/state") .onSuccess(Functionals.chain(Functionals.chain(HttpValueFunctions.jsonContents(), JsonFunctions.cast(String.class)), Enums.fromStringFunction(ManagementNodeState.class))) .setOnFailureOrException(null))