@Override public void putAll(Map<K, V> values) throws IOException { RegionAPI.PutAllRequest.Builder putAllRequest = RegionAPI.PutAllRequest.newBuilder(); putAllRequest.setRegionName(name); for (K key : values.keySet()) { putAllRequest.addEntry(valueEncoder.encodeEntry(key, values.get(key))); } final Message request = Message.newBuilder().setPutAllRequest(putAllRequest).build(); final RegionAPI.PutAllResponse putAllResponse = protobufChannel.sendRequest(request, MessageTypeCase.PUTALLRESPONSE).getPutAllResponse(); if (0 < putAllResponse.getFailedKeysCount()) { Map<Object, String> failures = new HashMap<>(); for (BasicTypes.KeyedError keyedError : putAllResponse.getFailedKeysList()) { failures.put(valueEncoder.decodeValue(keyedError.getKey()), keyedError.getError().getMessage()); } throw new IOException("Unable to put the following keys: " + failures); } }
/** * Create a request to insert multiple entries in a region * * @param regionName - Region to which entries are being added * @param entries - key, value pairs to add to the region * @return Request object containing the putAll request for the passed parameters */ public static ClientProtocol.Message createPutAllRequest(String regionName, Set<BasicTypes.Entry> entries) { RegionAPI.PutAllRequest.Builder putAllRequestBuilder = RegionAPI.PutAllRequest.newBuilder().setRegionName(regionName); putAllRequestBuilder.addAllEntry(entries); return ClientProtocol.Message.newBuilder().setPutAllRequest(putAllRequestBuilder).build(); }