use of co.cask.cdap.common.SecureKeyNotFoundException in project cdap by caskdata.
the class SecureStoreClient method getKeyMetadata.
/**
* Get the metadata associated with the given secure key
*
* @param secureKeyId {@link SecureKeyId} secure key name
* @return {@link SecureStoreMetadata} metadata associated with the key
* @throws IOException if a network error occurred
* @throws UnauthenticatedException if the request is not authorized successfully in the gateway server
* @throws SecureKeyNotFoundException if secure key or the namespace is not found
*/
public SecureStoreMetadata getKeyMetadata(SecureKeyId secureKeyId) throws IOException, UnauthenticatedException, SecureKeyNotFoundException, UnauthorizedException {
URL url = config.resolveNamespacedURLV3(secureKeyId.getParent(), String.format("%s/metadata", getSecureKeyPath(secureKeyId)));
HttpResponse response = restClient.execute(HttpMethod.GET, url, config.getAccessToken(), HttpURLConnection.HTTP_NOT_FOUND);
if (response.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
throw new SecureKeyNotFoundException(secureKeyId);
}
return GSON.fromJson(response.getResponseBodyAsString(), SecureStoreMetadata.class);
}
use of co.cask.cdap.common.SecureKeyNotFoundException in project cdap by caskdata.
the class SecureStoreClient method deleteKey.
/**
* Delete the secure key
* @param secureKeyId {@link SecureKeyId} secure key name
* @throws IOException if a network error occurred
* @throws UnauthenticatedException if the request is not authorized successfully in the gateway server
* @throws SecureKeyNotFoundException if secure key or the namespace is not found
*/
public void deleteKey(SecureKeyId secureKeyId) throws IOException, UnauthenticatedException, SecureKeyNotFoundException, UnauthorizedException {
URL url = config.resolveNamespacedURLV3(secureKeyId.getParent(), getSecureKeyPath(secureKeyId));
HttpResponse response = restClient.execute(HttpMethod.DELETE, url, config.getAccessToken(), HttpURLConnection.HTTP_NOT_FOUND);
if (response.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
throw new SecureKeyNotFoundException(secureKeyId);
}
}
use of co.cask.cdap.common.SecureKeyNotFoundException in project cdap by caskdata.
the class SecureStoreClientTest method testErrorScenarios.
@Test
public void testErrorScenarios() throws Exception {
try {
client.listKeys(new NamespaceId("notfound"));
Assert.fail("Should have thrown exception since namespace doesn't exist");
} catch (NamespaceNotFoundException e) {
// expected
}
try {
client.deleteKey(new SecureKeyId(NamespaceId.DEFAULT.getNamespace(), "badkey"));
Assert.fail("Should have thrown exception since the key doesn't exist");
} catch (SecureKeyNotFoundException e) {
// expected
}
try {
client.getData(new SecureKeyId(NamespaceId.DEFAULT.getNamespace(), "badkey"));
Assert.fail("Should have thrown exception since the key doesn't exist");
} catch (SecureKeyNotFoundException e) {
// expected
}
try {
client.getKeyMetadata(new SecureKeyId(NamespaceId.DEFAULT.getNamespace(), "badkey"));
Assert.fail("Should have thrown exception since the key doesn't exist");
} catch (SecureKeyNotFoundException e) {
// expected
}
try {
client.getKeyMetadata(new SecureKeyId("notfound", "somekey"));
Assert.fail("Should have thrown exception since the namespace doesn't exist");
} catch (SecureKeyNotFoundException e) {
// expected
}
SecureKeyId id = new SecureKeyId(NamespaceId.DEFAULT.getNamespace(), "key1");
SecureKeyCreateRequest request = new SecureKeyCreateRequest("", "a", ImmutableMap.<String, String>of());
client.createKey(id, request);
try {
client.createKey(id, request);
Assert.fail("Should have thrown exception since the key already exists");
} catch (SecureKeyAlreadyExistsException e) {
// expected
}
client.deleteKey(id);
}
use of co.cask.cdap.common.SecureKeyNotFoundException in project cdap by caskdata.
the class SecureStoreClient method getData.
/**
* Fetch the data associated with the given secure key
*
* @param secureKeyId {@link SecureKeyId} secure key name
* @return the secure data in a utf-8 encoded byte array
* @throws IOException if a network error occurred
* @throws UnauthenticatedException if the request is not authorized successfully in the gateway server
* @throws SecureKeyNotFoundException if secure key or the namespace is not found
*/
public String getData(SecureKeyId secureKeyId) throws IOException, UnauthenticatedException, SecureKeyNotFoundException, UnauthorizedException {
URL url = config.resolveNamespacedURLV3(secureKeyId.getParent(), getSecureKeyPath(secureKeyId));
HttpResponse response = restClient.execute(HttpMethod.GET, url, config.getAccessToken(), HttpURLConnection.HTTP_NOT_FOUND);
if (response.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
throw new SecureKeyNotFoundException(secureKeyId);
}
return response.getResponseBodyAsString();
}
Aggregations