use of org.ovirt.engine.sdk4.Error in project ovirt-engine-sdk-java by oVirt.
the class ConnectionBuilder45 method createConnectionSocketFactoryRegistry.
private Registry createConnectionSocketFactoryRegistry() {
String protocol = getProtocol();
Registry registry = null;
// Create SSL/TLS or plain connection:
if (HTTP_PROTOCOL.equals(protocol)) {
ConnectionSocketFactory plainsf = PlainConnectionSocketFactory.getSocketFactory();
registry = RegistryBuilder.<ConnectionSocketFactory>create().register(HTTP_PROTOCOL, plainsf).build();
} else if (HTTPS_PROTOCOL.equals(protocol)) {
try {
LayeredConnectionSocketFactory sslsf = null;
if (this.insecure) {
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, new TrustManager[] { noCaTrustManager }, null);
sslsf = new SSLConnectionSocketFactory(sslcontext, NoopHostnameVerifier.INSTANCE);
} else {
SSLContextBuilder sslContextBuilder = SSLContexts.custom();
if (trustStoreFile != null) {
sslContextBuilder.loadTrustMaterial(new File(trustStoreFile), this.trustStorePassword != null ? this.trustStorePassword.toCharArray() : null);
}
SSLContext sslContext = sslContextBuilder.build();
sslsf = new SSLConnectionSocketFactory(sslContext, new DefaultHostnameVerifier());
}
registry = RegistryBuilder.<ConnectionSocketFactory>create().register(HTTPS_PROTOCOL, sslsf).build();
} catch (NoSuchAlgorithmException e) {
throw new Error(NO_TLS_ERROR, e);
} catch (KeyManagementException e) {
throw new Error(BAD_KEY_ERROR, e);
} catch (KeyStoreException e) {
throw new Error(KEY_STORE_ERROR, e);
} catch (FileNotFoundException e) {
throw new Error(KEY_STORE_FILE_NOT_FOUND_ERROR, e);
} catch (CertificateException e) {
throw new Error(CERTIFICATE_ERROR, e);
} catch (IOException e) {
throw new Error(IO_ERROR, e);
}
} else {
throw new Error(BAD_PROTOCOL_ERROR + protocol);
}
return registry;
}
use of org.ovirt.engine.sdk4.Error in project ovirt-engine-sdk-java by oVirt.
the class HttpConnection method revokeAccessToken.
private void revokeAccessToken() {
// Build SSO revoke URL:
URI ssoRevokeURI = ssoRevokeUrl != null ? SsoUtils.buildUrl(ssoRevokeUrl) : ssoToken != null ? SsoUtils.buildSsoRevokeUrl(url) : null;
// Construct POST body:
List<NameValuePair> params = new ArrayList<>(2);
params.add(new BasicNameValuePair("scope", "ovirt-app-api"));
params.add(new BasicNameValuePair("token", ssoToken));
// Send request to revoke SSO token:
if (ssoRevokeURI != null) {
JsonNode node = getSsoResponse(ssoRevokeURI, params);
if (node.isArray()) {
node = node.get(0);
}
if (node.get("error") != null) {
throw new Error(String.format("Error during SSO token revoke %1$s : %2$s", node.get("error_code"), node.get("error")));
}
}
}
use of org.ovirt.engine.sdk4.Error in project ovirt-engine-sdk-java by oVirt.
the class HttpConnection method followLink.
@Override
public <TYPE> TYPE followLink(TYPE object) {
if (!isLink(object)) {
throw new Error("Can't follow link because object don't have any");
}
String href = getHref(object);
if (href == null) {
throw new Error("Can't follow link because the 'href' attribute does't have a value");
}
try {
URL url = new URL(getUrl());
String prefix = url.getPath();
if (!prefix.endsWith("/")) {
prefix += "/";
}
if (!href.startsWith(prefix)) {
throw new Error("The URL '" + href + "' isn't compatible with the base URL of the connection");
}
// Get service based on path
String path = href.substring(prefix.length());
Service service = systemService().service(path);
// Obtain method which provides result object and invoke it:
Method get;
if (object instanceof ListWithHref) {
get = service.getClass().getMethod("list");
} else {
get = service.getClass().getMethod("get");
}
Object getRequest = get.invoke(service);
Method send = getRequest.getClass().getMethod("send");
send.setAccessible(true);
Object getResponse = send.invoke(getRequest);
Method obtainObject = getResponse.getClass().getDeclaredMethods()[0];
obtainObject.setAccessible(true);
return (TYPE) obtainObject.invoke(getResponse);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
throw new Error(String.format("Unexpected error while following link \"%1$s\"", href), ex);
} catch (MalformedURLException ex) {
throw new Error(String.format("Error while creating URL \"%1$s\"", getUrl()), ex);
}
}
use of org.ovirt.engine.sdk4.Error in project ovirt-engine-sdk-java by oVirt.
the class HttpConnection method getAccessToken.
private String getAccessToken() {
if (ssoToken == null) {
// Build SSO URL if necessary:
URI ssoURI = ssoUrl != null ? SsoUtils.buildUrl(ssoUrl) : kerberos ? SsoUtils.buildSsoUrlKerberos(url) : SsoUtils.buildSsoUrlBasic(url);
// Construct POST body:
List<NameValuePair> params = new ArrayList<>(4);
params.add(new BasicNameValuePair("scope", "ovirt-app-api"));
if (kerberos) {
params.add(new BasicNameValuePair("grant_type", "urn:ovirt:params:oauth:grant-type:http"));
} else {
params.add(new BasicNameValuePair("username", user));
params.add(new BasicNameValuePair("password", password));
params.add(new BasicNameValuePair("grant_type", "password"));
}
// Send request to obtain SSO token:
JsonNode node = getSsoResponse(ssoURI, params);
if (node.isArray()) {
node = node.get(0);
}
if (node.get("error") != null) {
throw new Error(String.format("Error during SSO authentication %1$s : %2$s", node.get("error_code"), node.get("error")));
}
ssoToken = node.get(ssoTokenName).getTextValue();
}
return ssoToken;
}
use of org.ovirt.engine.sdk4.Error in project ovirt-engine-sdk-java by oVirt.
the class HttpConnection method send.
public HttpResponse send(HttpUriRequest request) {
try {
injectHeaders(request);
HttpResponse response = client.execute(request);
checkContentType(XML_CONTENT_TYPE_RE, "XML", response.getFirstHeader("content-type").getValue());
return response;
} catch (Exception e) {
throw new Error("Failed to send request", e);
}
}
Aggregations