![JAR search and dependency download from the Maven repository](/logo.png)
org.infinispan.client.rest.impl.okhttp.RestClusterClientOkHttp Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of infinispan-client-rest-jakarta Show documentation
Show all versions of infinispan-client-rest-jakarta Show documentation
Infinispan REST Client Jakarta
package org.infinispan.client.rest.impl.okhttp;
import static org.infinispan.client.rest.impl.okhttp.RestClientOkHttp.EMPTY_BODY;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletionStage;
import org.infinispan.client.rest.RestClusterClient;
import org.infinispan.client.rest.RestResponse;
import org.infinispan.commons.dataconversion.MediaType;
import org.infinispan.commons.dataconversion.internal.Json;
import okhttp3.MultipartBody;
import okhttp3.Request;
import okhttp3.RequestBody;
/**
* @author Tristan Tarrant <[email protected]>
* @since 10.0
**/
public class RestClusterClientOkHttp implements RestClusterClient {
private final RestClientOkHttp client;
private final String baseClusterURL;
RestClusterClientOkHttp(RestClientOkHttp restClient) {
this.client = restClient;
this.baseClusterURL = String.format("%s%s/v2/cluster", restClient.getBaseURL(), restClient.getConfiguration().contextPath()).replaceAll("//", "/");
}
@Override
public CompletionStage stop() {
return stop(Collections.emptyList());
}
@Override
public CompletionStage stop(List servers) {
Request.Builder builder = new Request.Builder();
StringBuilder sb = new StringBuilder(baseClusterURL);
sb.append("?action=stop");
for (String server : servers) {
sb.append("&server=");
sb.append(server);
}
builder.post(EMPTY_BODY).url(sb.toString());
return client.execute(builder);
}
@Override
public CompletionStage createBackup(String name) {
RequestBody body = new StringRestEntityOkHttp(MediaType.APPLICATION_JSON, Json.object().toString()).toRequestBody();
return client.execute(backup(name).post(body));
}
@Override
public CompletionStage getBackup(String name, boolean skipBody) {
Request.Builder builder = backup(name);
if (skipBody)
builder.head();
return client.execute(builder);
}
@Override
public CompletionStage getBackupNames() {
Request.Builder builder = new Request.Builder().url(baseClusterURL + "/backups");
return client.execute(builder);
}
@Override
public CompletionStage deleteBackup(String name) {
return client.execute(backup(name).delete());
}
@Override
public CompletionStage restore(String name, File backup) {
RequestBody zipBody = new FileRestEntityOkHttp(MediaType.APPLICATION_ZIP, backup).toRequestBody();
RequestBody multipartBody = new MultipartBody.Builder()
.addFormDataPart("backup", backup.getName(), zipBody)
.setType(MultipartBody.FORM)
.build();
Request.Builder builder = restore(name).post(multipartBody);
return client.execute(builder);
}
@Override
public CompletionStage restore(String name, String backupLocation) {
Json json = Json.object();
json.set("location", backupLocation);
RequestBody body = new StringRestEntityOkHttp(MediaType.APPLICATION_JSON, json.toString()).toRequestBody();
Request.Builder builder = restore(name).post(body);
return client.execute(builder);
}
@Override
public CompletionStage getRestore(String name) {
return client.execute(restore(name).head());
}
@Override
public CompletionStage getRestoreNames() {
return client.execute(new Request.Builder().url(baseClusterURL + "/restores"));
}
@Override
public CompletionStage deleteRestore(String name) {
return client.execute(restore(name).delete());
}
@Override
public CompletionStage distribution() {
Request.Builder builder = new Request.Builder();
builder.url(baseClusterURL + "?action=distribution").get();
return client.execute(builder);
}
private Request.Builder backup(String name) {
return new Request.Builder().url(baseClusterURL + "/backups/" + name);
}
private Request.Builder restore(String name) {
return new Request.Builder().url(baseClusterURL + "/restores/" + name);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy