Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/main/java/io/weaviate/client/WeaviateClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import io.weaviate.client.base.util.DbVersionProvider;
import io.weaviate.client.base.util.DbVersionSupport;
import io.weaviate.client.base.util.GrpcVersionSupport;
import io.weaviate.client.v1.aliases.Aliases;
import io.weaviate.client.v1.async.WeaviateAsyncClient;
import io.weaviate.client.v1.auth.provider.AccessTokenProvider;
import io.weaviate.client.v1.backup.Backup;
Expand Down Expand Up @@ -111,6 +112,10 @@ public Users users() {
return new Users(httpClient, config);
}

public Aliases alias() {
return new Aliases(httpClient, config);
}

private DbVersionProvider initDbVersionProvider() {
MetaGetter metaGetter = new Misc(httpClient, config, null).metaGetter();
DbVersionProvider.VersionGetter getter = () -> Optional.ofNullable(metaGetter.run())
Expand Down
46 changes: 30 additions & 16 deletions src/main/java/io/weaviate/client/base/AsyncBaseClient.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
package io.weaviate.client.base;

import io.weaviate.client.Config;
import io.weaviate.client.base.http.async.ResponseParser;
import io.weaviate.client.base.http.async.WeaviateResponseConsumer;
import io.weaviate.client.v1.auth.provider.AccessTokenProvider;
import java.util.Map;
import java.util.concurrent.Future;

import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
import org.apache.hc.core5.concurrent.FutureCallback;
import org.apache.hc.core5.http.ContentType;
import org.apache.hc.core5.http.HttpHeaders;

import io.weaviate.client.Config;
import io.weaviate.client.base.http.async.ResponseParser;
import io.weaviate.client.base.http.async.WeaviateResponseConsumer;
import io.weaviate.client.v1.auth.provider.AccessTokenProvider;

public abstract class AsyncBaseClient<T> {
protected final CloseableHttpAsyncClient client;
private final Config config;
Expand All @@ -30,52 +32,64 @@ protected Future<Result<T>> sendGetRequest(String endpoint, Class<T> classOfT, F
return sendRequest(endpoint, null, "GET", classOfT, callback, null);
}

protected Future<Result<T>> sendGetRequest(String endpoint, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendGetRequest(String endpoint, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, null, "GET", null, callback, parser);
}

protected Future<Result<T>> sendPostRequest(String endpoint, Object payload, Class<T> classOfT, FutureCallback<Result<T>> callback) {
protected Future<Result<T>> sendPostRequest(String endpoint, Object payload, Class<T> classOfT,
FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, payload, "POST", classOfT, callback, null);
}

protected Future<Result<T>> sendPostRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendPostRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, payload, "POST", null, callback, parser);
}

protected Future<Result<T>> sendPutRequest(String endpoint, Object payload, Class<T> classOfT, FutureCallback<Result<T>> callback) {
protected Future<Result<T>> sendPutRequest(String endpoint, Object payload, Class<T> classOfT,
FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, payload, "PUT", classOfT, callback, null);
}

protected Future<Result<T>> sendPutRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendPutRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, payload, "PUT", null, callback, parser);
}

protected Future<Result<T>> sendPatchRequest(String endpoint, Object payload, Class<T> classOfT, FutureCallback<Result<T>> callback) {
protected Future<Result<T>> sendPatchRequest(String endpoint, Object payload, Class<T> classOfT,
FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, payload, "PATCH", classOfT, callback, null);
}

protected Future<Result<T>> sendPatchRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendPatchRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, payload, "PATCH", null, callback, parser);
}

protected Future<Result<T>> sendDeleteRequest(String endpoint, Object payload, Class<T> classOfT, FutureCallback<Result<T>> callback) {
protected Future<Result<T>> sendDeleteRequest(String endpoint, Object payload, Class<T> classOfT,
FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, payload, "DELETE", classOfT, callback, null);
}

protected Future<Result<T>> sendDeleteRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendDeleteRequest(String endpoint, Object payload, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, payload, "DELETE", null, callback, parser);
}

protected Future<Result<T>> sendHeadRequest(String endpoint, Class<T> classOfT, FutureCallback<Result<T>> callback) {
return sendRequest(endpoint, null, "HEAD", classOfT, callback, null);
}

protected Future<Result<T>> sendHeadRequest(String endpoint, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
protected Future<Result<T>> sendHeadRequest(String endpoint, FutureCallback<Result<T>> callback,
ResponseParser<T> parser) {
return sendRequest(endpoint, null, "HEAD", null, callback, parser);
}

private Future<Result<T>> sendRequest(String endpoint, Object payload, String method, Class<T> classOfT, FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
return client.execute(SimpleRequestProducer.create(getRequest(endpoint, payload, method)), new WeaviateResponseConsumer<>(classOfT, parser), callback);
private Future<Result<T>> sendRequest(String endpoint, Object payload, String method, Class<T> classOfT,
FutureCallback<Result<T>> callback, ResponseParser<T> parser) {
return client.execute(SimpleRequestProducer.create(getRequest(endpoint, payload, method)),
new WeaviateResponseConsumer<>(classOfT, parser), callback);
}

protected SimpleHttpRequest getRequest(String endpoint, Object payload, String method) {
Expand Down
39 changes: 39 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/Aliases.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package io.weaviate.client.v1.aliases;

import io.weaviate.client.Config;
import io.weaviate.client.base.http.HttpClient;
import io.weaviate.client.v1.aliases.api.AliasAllGetter;
import io.weaviate.client.v1.aliases.api.AliasCreator;
import io.weaviate.client.v1.aliases.api.AliasDeleter;
import io.weaviate.client.v1.aliases.api.AliasGetter;
import io.weaviate.client.v1.aliases.api.AliasUpdater;

public class Aliases {
private final Config config;
private final HttpClient httpClient;

public Aliases(HttpClient httpClient, Config config) {
this.config = config;
this.httpClient = httpClient;
}

public AliasCreator creator() {
return new AliasCreator(httpClient, config);
}

public AliasGetter getter() {
return new AliasGetter(httpClient, config);
}

public AliasAllGetter allGetter() {
return new AliasAllGetter(httpClient, config);
}

public AliasDeleter deleter() {
return new AliasDeleter(httpClient, config);
}

public AliasUpdater updater() {
return new AliasUpdater(httpClient, config);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package io.weaviate.client.v1.aliases.api;

import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Response;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;
import io.weaviate.client.v1.aliases.api.AliasAllGetter.ResponseBody;
import io.weaviate.client.v1.aliases.model.Alias;

public class AliasAllGetter extends BaseClient<ResponseBody> implements ClientResult<Map<String, Alias>> {
private String className;

public AliasAllGetter(HttpClient httpClient, Config config) {
super(httpClient, config);
}

/** List aliases defined for this class. */
public AliasAllGetter withClassName(String className) {
this.className = className;
return this;
}

static class ResponseBody {
List<Alias> aliases;
}

@Override
public Result<Map<String, Alias>> run() {
String path = "/aliases" + (className != null ? "?class=" + className : "");
Response<ResponseBody> resp = sendGetRequest(path, ResponseBody.class);
if (resp.getErrors() != null) {
return new Result<>(resp, null);
}
Map<String, Alias> aliases = resp.getBody().aliases.stream()
.collect(Collectors.toMap(Alias::getAlias, Function.identity()));
return new Result<>(resp, aliases);
}
}
34 changes: 34 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/api/AliasCreator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package io.weaviate.client.v1.aliases.api;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Response;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;
import io.weaviate.client.v1.aliases.model.Alias;

public class AliasCreator extends BaseClient<Void> implements ClientResult<Boolean> {
private String className;
private String alias;

public AliasCreator(HttpClient httpClient, Config config) {
super(httpClient, config);
}

public AliasCreator withClassName(String className) {
this.className = className;
return this;
}

public AliasCreator withAlias(String alias) {
this.alias = alias;
return this;
}

@Override
public Result<Boolean> run() {
Response<Void> resp = sendPostRequest("/aliases", new Alias(className, alias), Void.class);
return Result.voidToBoolean(resp);
}
}
27 changes: 27 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/api/AliasDeleter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package io.weaviate.client.v1.aliases.api;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Response;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;

public class AliasDeleter extends BaseClient<Void> implements ClientResult<Boolean> {
private String alias;

public AliasDeleter(HttpClient httpClient, Config config) {
super(httpClient, config);
}

public AliasDeleter withAlias(String alias) {
this.alias = alias;
return this;
}

@Override
public Result<Boolean> run() {
Response<Void> resp = sendDeleteRequest("/aliases/" + alias, null, Void.class);
return Result.voidToBoolean(resp);
}
}
26 changes: 26 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/api/AliasGetter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.weaviate.client.v1.aliases.api;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;
import io.weaviate.client.v1.aliases.model.Alias;

public class AliasGetter extends BaseClient<Alias> implements ClientResult<Alias> {
private String alias;

public AliasGetter(HttpClient httpClient, Config config) {
super(httpClient, config);
}

public AliasGetter withAlias(String alias) {
this.alias = alias;
return this;
}

@Override
public Result<Alias> run() {
return new Result<>(sendGetRequest("/aliases/" + alias, Alias.class));
}
}
40 changes: 40 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/api/AliasUpdater.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package io.weaviate.client.v1.aliases.api;

import com.google.gson.annotations.SerializedName;

import io.weaviate.client.Config;
import io.weaviate.client.base.BaseClient;
import io.weaviate.client.base.ClientResult;
import io.weaviate.client.base.Response;
import io.weaviate.client.base.Result;
import io.weaviate.client.base.http.HttpClient;

public class AliasUpdater extends BaseClient<Void> implements ClientResult<Boolean> {
private String className;
private String alias;

public AliasUpdater(HttpClient httpClient, Config config) {
super(httpClient, config);
}

public AliasUpdater withAlias(String alias) {
this.alias = alias;
return this;
}

public AliasUpdater withNewClassName(String className) {
this.className = className;
return this;
}

class Body {
@SerializedName("class")
String className = AliasUpdater.this.className;
}

@Override
public Result<Boolean> run() {
Response<Void> resp = sendPutRequest("/aliases/" + alias, new Body(), Void.class);
return Result.voidToBoolean(resp);
}
}
17 changes: 17 additions & 0 deletions src/main/java/io/weaviate/client/v1/aliases/model/Alias.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.weaviate.client.v1.aliases.model;

import com.google.gson.annotations.SerializedName;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
@EqualsAndHashCode
public class Alias {
@SerializedName("class")
private final String className;
@SerializedName("alias")
private final String alias;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import io.weaviate.client.base.util.DbVersionProvider;
import io.weaviate.client.base.util.DbVersionSupport;
import io.weaviate.client.base.util.GrpcVersionSupport;
import io.weaviate.client.v1.async.aliases.Aliases;
import io.weaviate.client.v1.async.backup.Backup;
import io.weaviate.client.v1.async.batch.Batch;
import io.weaviate.client.v1.async.classifications.Classifications;
Expand Down Expand Up @@ -84,6 +85,10 @@ public Users users() {
return new Users(client, config, tokenProvider);
}

public Aliases alias() {
return new Aliases(client, config, tokenProvider);
}

private DbVersionProvider initDbVersionProvider() {
DbVersionProvider.VersionGetter getter = () -> Optional.ofNullable(this.getMeta())
.filter(result -> !result.hasErrors())
Expand Down
Loading