public static <T> T get(Map<String, String> conf, String key, Codec<T> codec) throws IOException { String value = conf.get(key); if (value == null) { LOG.trace("De-serializing {} with null value", key); return codec.decode(null); } byte[] encoded = Base64.decodeBase64(value); LOG.trace("De-serializing {} {}", key, Bytes.toStringBinary(encoded)); return codec.decode(encoded); }
public static <T> T get(Configuration conf, String key, Codec<T> codec) throws IOException { String value = conf.get(key); if (value == null) { LOG.trace("De-serializing {} with null value", key); return codec.decode(null); } byte[] encoded = Base64.decodeBase64(value); LOG.trace("De-serializing {} {}", key, Bytes.toStringBinary(encoded)); return codec.decode(encoded); }
public static <T> T get(Map<String, String> conf, String key, Codec<T> codec) throws IOException { String value = conf.get(key); if (value == null) { LOG.trace("De-serializing {} with null value", key); return codec.decode(null); } byte[] encoded = Base64.decodeBase64(value); LOG.trace("De-serializing {} {}", key, Bytes.toStringBinary(encoded)); return codec.decode(encoded); }
public static <T> T get(Configuration conf, String key, Codec<T> codec) throws IOException { String value = conf.get(key); if (value == null) { LOG.trace("De-serializing {} with null value", key); return codec.decode(null); } byte[] encoded = Base64.decodeBase64(value); LOG.trace("De-serializing {} {}", key, Bytes.toStringBinary(encoded)); return codec.decode(encoded); }
@Override public void onSuccess(NodeData result) { try { RouteConfig route = ROUTE_CONFIG_CODEC.decode(result.getData()); settableFuture.set(route); // Replace the future in the routeConfigMap in order to reflect the route config changes routeConfigMap.replace(serviceId, oldSettableFuture, settableFuture); } catch (Exception ex) { LOG.debug("Unable to deserialize the config for service {}. Got data {}", serviceId, result.getData()); // Need to remove the future from the map since later calls will continue to use this future and will think // that there is an exception routeConfigMap.remove(serviceId, settableFuture); settableFuture.setException(ex); } }
@Override public void onSuccess(NodeData result) { try { RouteConfig route = ROUTE_CONFIG_CODEC.decode(result.getData()); settableFuture.set(route); // Replace the future in the routeConfigMap in order to reflect the route config changes routeConfigMap.replace(serviceId, oldSettableFuture, settableFuture); } catch (Exception ex) { LOG.debug("Unable to deserialize the config for service {}. Got data {}", serviceId, result.getData()); // Need to remove the future from the map since later calls will continue to use this future and will think // that there is an exception routeConfigMap.remove(serviceId, settableFuture); settableFuture.setException(ex); } }
@Override public void onSuccess(NodeData result) { if (assignments.get(name) != null) { // Assignment should has been performed while this one is fetching. So, ignore this. return; } byte[] data = result.getData(); ResourceAssignment resourceAssignment = new ResourceAssignment(name); try { if (data != null) { resourceAssignment = CoordinationConstants.RESOURCE_ASSIGNMENT_CODEC.decode(data); } } catch (Throwable t) { LOG.warn("Failed to decode resource assignment. Perform assignment as if no assignment existed.", t); } assignments.put(name, resourceAssignment); performAssignment(requirement, serviceDiscovered); }
@Override public void onSuccess(NodeData result) { byte[] data = result.getData(); if (data == null) { updateAndNotify(name, null); } else { try { updateAndNotify(name, codec.decode(data)); } catch (IOException e) { LOG.error("Failed to decode property data for {}: {}", name, Bytes.toStringBinary(data), e); notifyError(name, e); } } }
@Override public void onSuccess(NodeData result) { byte[] data = result.getData(); if (data == null) { updateAndNotify(name, null); } else { try { updateAndNotify(name, codec.decode(data)); } catch (IOException e) { LOG.error("Failed to decode property data for {}: {}", name, Bytes.toStringBinary(data), e); notifyError(name, e); } } }
@Override public TokenState validate(String token) { AccessToken accessToken; TokenState state = TokenState.VALID; if (token == null) { LOG.debug("Token is missing"); return TokenState.MISSING; } byte[] decodedToken = Base64.decodeBase64(token); try { accessToken = accessTokenCodec.decode(decodedToken); tokenManager.validateSecret(accessToken); } catch (IOException ioe) { state = TokenState.INVALID; LOG.debug("Unknown Schema version for Access Token. {}", ioe); } catch (InvalidTokenException ite) { state = ite.getReason(); LOG.debug("{} {}", state, ite); } return state; } }
@Override public ResourceRequirement apply(@Nullable NodeData input) { if (input == null) { return null; } try { return CoordinationConstants.RESOURCE_REQUIREMENT_CODEC.decode(input.getData()); } catch (Throwable t) { LOG.error("Failed to decode resource requirement: {}", Bytes.toStringBinary(input.getData()), t); throw Throwables.propagate(t); } } };
@Override public void onSuccess(NodeData result) { if (assignments.get(name) != null) { // Assignment should has been performed while this one is fetching. So, ignore this. return; } byte[] data = result.getData(); ResourceAssignment resourceAssignment = new ResourceAssignment(name); try { if (data != null) { resourceAssignment = CoordinationConstants.RESOURCE_ASSIGNMENT_CODEC.decode(data); } } catch (Throwable t) { LOG.warn("Failed to decode resource assignment. Perform assignment as if no assignment existed.", t); } assignments.put(name, resourceAssignment); performAssignment(requirement, serviceDiscovered); }
@Override public ResourceRequirement apply(@Nullable NodeData input) { if (input == null) { return null; } try { return CoordinationConstants.RESOURCE_REQUIREMENT_CODEC.decode(input.getData()); } catch (Throwable t) { LOG.error("Failed to decode resource requirement: {}", Bytes.toStringBinary(input.getData()), t); throw Throwables.propagate(t); } } };
/** * * @param accessToken is the access token from Authorization header in HTTP Request * @return the serialized access token identifer * @throws IOException */ public AccessTokenIdentifierPair transform(String accessToken) throws IOException { byte[] decodedAccessToken = Base64.decodeBase64(accessToken); AccessToken accessTokenObj = accessTokenCodec.decode(decodedAccessToken); AccessTokenIdentifier accessTokenIdentifierObj = accessTokenObj.getIdentifier(); byte[] encodedAccessTokenIdentifier = accessTokenIdentifierCodec.encode(accessTokenIdentifierObj); return new AccessTokenIdentifierPair(Base64.encodeBase64String(encodedAccessTokenIdentifier).trim(), accessTokenIdentifierObj); }
@Override public void onSuccess(NodeData result) { try { ResourceAssignment assignment = CoordinationConstants.RESOURCE_ASSIGNMENT_CODEC.decode(result.getData()); LOG.debug("Received resource assignment for {}. {}", serviceName, assignment.getAssignments()); handleAssignmentChange(serviceName, assignment); } catch (Exception e) { LOG.error("Failed to decode ResourceAssignment {}", Bytes.toStringBinary(result.getData()), e); } }
@Override public void onSuccess(NodeData result) { try { ResourceAssignment assignment = CoordinationConstants.RESOURCE_ASSIGNMENT_CODEC.decode(result.getData()); LOG.debug("Received resource assignment for {}. {}", serviceName, assignment.getAssignments()); handleAssignmentChange(serviceName, assignment); } catch (Exception e) { LOG.error("Failed to decode ResourceAssignment {}", Bytes.toStringBinary(result.getData()), e); } }
@Override public void onSuccess(NodeData result) { T resource = null; try { resource = codec.decode(result.getData()); resourceCallback.onSuccess(resource); } catch (IOException ioe) { resourceCallback.onFailure(ioe); } }
@Test public void testKeyIdentifierSerialization() throws Exception { SecretKey nextKey = keyGenerator.generateKey(); Random random = new Random(); KeyIdentifier keyIdentifier = new KeyIdentifier(nextKey, random.nextInt(), Long.MAX_VALUE); byte[] encoded = keyIdentifierCodec.encode(keyIdentifier); KeyIdentifier decodedKeyIdentifier = keyIdentifierCodec.decode(encoded); assertEquals(keyIdentifier, decodedKeyIdentifier); }
@Test public void testCreateOrSet() throws Exception { String path = "/parent/testCreateOrSet"; ZKClientService zkClient = ZKClientService.Builder.of(zkServer.getConnectionStr()).build(); zkClient.startAndWait(); // Create with "1" Assert.assertEquals(1, ZKExtOperations.createOrSet(zkClient, path, Suppliers.ofInstance(1), INT_CODEC, 0).get().intValue()); // Should get "1" back Assert.assertEquals(1, INT_CODEC.decode(zkClient.getData(path).get().getData()).intValue()); // Set with "2" Assert.assertEquals(2, ZKExtOperations.createOrSet(zkClient, path, Suppliers.ofInstance(2), INT_CODEC, 0).get().intValue()); // Should get "2" back Assert.assertEquals(2, INT_CODEC.decode(zkClient.getData(path).get().getData()).intValue()); zkClient.stopAndWait(); }
@Test public void testSetOrCreate() throws Exception { String path = "/parent/testSetOrCreate"; ZKClientService zkClient = ZKClientService.Builder.of(zkServer.getConnectionStr()).build(); zkClient.startAndWait(); // Create with "1" Assert.assertEquals(1, ZKExtOperations.setOrCreate(zkClient, path, Suppliers.ofInstance(1), INT_CODEC, 0).get().intValue()); // Should get "1" back Assert.assertEquals(1, INT_CODEC.decode(zkClient.getData(path).get().getData()).intValue()); // Set with "2" Assert.assertEquals(2, ZKExtOperations.setOrCreate(zkClient, path, Suppliers.ofInstance(2), INT_CODEC, 0).get().intValue()); // Should get "2" back Assert.assertEquals(2, INT_CODEC.decode(zkClient.getData(path).get().getData()).intValue()); zkClient.stopAndWait(); }