Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: RelationalAI/rai-sdk-java
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.2.2-alpha
Choose a base ref
...
head repository: RelationalAI/rai-sdk-java
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Loading
Showing with 12,128 additions and 390 deletions.
  1. +96 −0 .github/actions/test/action.yml
  2. +9 −12 .github/workflows/maven-build.yaml
  3. +38 −1 CHANGELOG.md
  4. +16 −9 README.md
  5. +6 −5 config.spec
  6. +6 −1 pom.xml
  7. +1 −1 rai-sdk-examples/pom.xml
  8. +1 −1 rai-sdk-examples/run-all
  9. +30 −0 rai-sdk-examples/src/main/java/com/relationalai/examples/CancelTransaction.java
  10. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/CloneDatabase.java
  11. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/CreateDatabase.java
  12. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/CreateEngine.java
  13. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/CreateOAuthClient.java
  14. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/CreateUser.java
  15. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/DeleteDatabase.java
  16. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/DeleteEngine.java
  17. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/DeleteModel.java
  18. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/DeleteOAuthClient.java
  19. +0 −46 rai-sdk-examples/src/main/java/com/relationalai/examples/DeleteTransaction.java
  20. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/DeleteUser.java
  21. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/DisableUser.java
  22. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/EnableUser.java
  23. +3 −3 rai-sdk-examples/src/main/java/com/relationalai/examples/Execute.java
  24. +3 −2 rai-sdk-examples/src/main/java/com/relationalai/examples/ExecuteAsync.java
  25. +70 −0 rai-sdk-examples/src/main/java/com/relationalai/examples/ExecuteV1.java
  26. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/FindOAuthClient.java
  27. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/FindUser.java
  28. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetDatabase.java
  29. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetEngine.java
  30. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetModel.java
  31. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetOAuthClient.java
  32. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetTransaction.java
  33. +3 −3 rai-sdk-examples/src/main/java/com/relationalai/examples/GetTransactionMetadata.java
  34. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetTransactionProblems.java
  35. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetTransactionResults.java
  36. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetTransactions.java
  37. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/GetUser.java
  38. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/ListDatabases.java
  39. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/ListEdbs.java
  40. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/ListEngines.java
  41. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/ListModelNames.java
  42. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/ListModels.java
  43. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/ListOAuthClients.java
  44. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/ListUsers.java
  45. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/LoadCsv.java
  46. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/LoadJson.java
  47. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/LoadModel.java
  48. +1 −0 rai-sdk-examples/src/main/java/com/relationalai/examples/Runnable.java
  49. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/Runner.java
  50. +1 −1 rai-sdk-examples/src/main/java/com/relationalai/examples/UpdateUser.java
  51. +1 −1 rai-sdk-examples/src/test/resources/hello.rel
  52. +65 −7 rai-sdk/pom.xml
  53. +2 −2 rai-sdk/src/main/java/com/relationalai/AccessToken.java
  54. +20 −0 rai-sdk/src/main/java/com/relationalai/ArrowUtils.java
  55. +118 −67 rai-sdk/src/main/java/com/relationalai/Client.java
  56. +2 −1 rai-sdk/src/main/java/com/relationalai/DefaultAccessTokenHandler.java
  57. +51 −0 rai-sdk/src/main/java/com/relationalai/DefaultPollInterval.java
  58. +2 −3 rai-sdk/src/main/java/com/relationalai/Json.java
  59. +2 −2 rai-sdk/src/main/java/com/relationalai/OAuthClientExtra.java
  60. +8 −0 rai-sdk/src/main/java/com/relationalai/TransactionAsyncCancelResponse.java
  61. +0 −33 rai-sdk/src/main/java/com/relationalai/TransactionAsyncMetadataResponse.java
  62. +13 −2 rai-sdk/src/main/java/com/relationalai/TransactionAsyncResult.java
  63. +1,744 −0 rai-sdk/src/main/java/com/relationalai/protocol/Message.java
  64. +9,328 −0 rai-sdk/src/main/java/com/relationalai/protocol/Schema.java
  65. +31 −0 rai-sdk/src/main/proto/message.proto
  66. +182 −0 rai-sdk/src/main/proto/schema.proto
  67. +5 −12 rai-sdk/src/test/java/com/relationalai/DatabaseTest.java
  68. +2 −22 rai-sdk/src/test/java/com/relationalai/EngineTest.java
  69. +21 −25 rai-sdk/src/test/java/com/relationalai/ExecuteAsyncTest.java
  70. +5 −9 rai-sdk/src/test/java/com/relationalai/ExecuteTest.java
  71. +22 −26 rai-sdk/src/test/java/com/relationalai/LoadCsvTest.java
  72. +3 −7 rai-sdk/src/test/java/com/relationalai/LoadJsonTest.java
  73. +3 −7 rai-sdk/src/test/java/com/relationalai/ModelsTest.java
  74. +26 −19 rai-sdk/src/test/java/com/relationalai/OAuthClientTest.java
  75. +54 −0 rai-sdk/src/test/java/com/relationalai/TestExtension.java
  76. +24 −7 rai-sdk/src/test/java/com/relationalai/UnitTest.java
  77. +25 −19 rai-sdk/src/test/java/com/relationalai/UserTest.java
  78. +5 −0 rai-sdk/src/test/resources/log4j.properties
  79. +10 −0 rai-sdk/src/test/resources/metadata.pb
  80. +36 −0 rai-sdk/src/test/resources/metadata.pb.txt
96 changes: 96 additions & 0 deletions .github/actions/test/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: 'rai-sdk-java test'

inputs:
client_id:
required: true
description: 'Client ID for oAuth'

client_secret:
required: true
description: 'Client secret for oAuth'

client_credentials_url:
required: true
description: 'Client credentials url for fetching the oAuth token'

rai_host:
required: false
description: 'RAI host'
default: 'azure.relationalai.com'

custom_headers:
required: false
description: 'Optional http headers'
default: '{}'

java_version:
required: false
description: 'Java version to test with'
default: '18'

runs:
using: 'composite'
steps:
- uses: actions/checkout@v3
with:
repository: RelationalAI/rai-sdk-java

- name: Set up JDK
uses: actions/setup-java@v3
env:
JAVA_VERSION: '1.8'
with:
java-version: ${{ matrix.java-version || inputs.java_version }}
cache: 'maven'
distribution: 'adopt'

- name: maven-settings-xml-action
uses: whelk-io/maven-settings-xml-action@v20
with:
servers: >
[
{
"id": "github",
"username": "${env.GITHUB_ACTOR}",
"password": "${env.GITHUB_TOKEN}"
},
{
"id": "central",
"configuration": {
"httpConfiguration": {
"all": {
"connectionTimeout": "3000",
"readTimeout": "60000"
}
}
}
}
]
- name: Download dependencies and build with Maven
run: |
for i in {1..3}
do
echo "[INFO] Attempt $i to download dependencies"
if mvn clean package -DskipTests
then
break
else
echo "[ERROR] Failed to download dependencies, will retry after 2s"
sleep 2s
fi
done
shell: bash

- name: Test with Maven
env:
CLIENT_ID: ${{ inputs.client_id }}
CLIENT_SECRET: ${{ inputs.client_secret }}
CLIENT_CREDENTIALS_URL: ${{ inputs.client_credentials_url }}
HOST: ${{ inputs.rai_host }}
CUSTOM_HEADERS: ${{ inputs.custom_headers }}
JAVA_TOOL_OPTIONS: --add-opens=java.base/java.nio=ALL-UNNAMED
run: |
mkdir -p ~/.rai
mvn test
shell: bash
21 changes: 9 additions & 12 deletions .github/workflows/maven-build.yaml
Original file line number Diff line number Diff line change
@@ -8,17 +8,14 @@ on:
jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
java-version: [ 11, 17, 18 ]
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
- uses: actions/checkout@v3
- uses: ./.github/actions/test
with:
java-version: '11'
distribution: 'adopt'
- name: Build with Maven
env:
CLIENT_ID: ${{ secrets.CLIENT_ID }}
CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
CLIENT_CREDENTIALS_URL: ${{ secrets.CLIENT_CREDENTIALS_URL }}
run: mvn clean install
client_id: ${{ secrets.CLIENT_ID }}
client_secret: ${{ secrets.CLIENT_SECRET }}
client_credentials_url: ${{ secrets.CLIENT_CREDENTIALS_URL }}
39 changes: 38 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,41 @@
## v0.2.2-alpha (latest)
# Changelog

## main
* Add custom headers support
* Expose http client
```
var client = new Client(cfg);
var headers = client.getDefaultHttpHeaders();
headers.put("h1", "v1");
var httpClient = client.getHttpClient();
```

## v0.4.2-alpha
* Increased the auth token expiration buffer from 5s to 60s.


## v0.4.1-alpha
* Adding support to new java versions.
* Upgrading `apache arrow` version to `9.0.0`.
* Fix protobuf metadata integration test.
* Run integration tests using jdks 11, 17 & 18.
* Fix memory leak issue
* If seeing errors like module java.base does not "opens java.nio" to unnamed module
please make sure to run java with `--add-opens=java.base/java.nio=ALL-UNNAMED` argument
or set JAVA_TOOL_OPTIONS environment variable
```shell
export JAVA_TOOL_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED"
```
## v0.4.0-alpha
* Renamed:
- `execute` to `executeV1`.
- `executeAsyncWait` to `execute`.

## v0.3.0-alpha
* Added `CancelTransaction` feature.

## v0.2.2-alpha
* Fixed `getTransaction` missing required properties: [finished_at].
* Added `deleteTransaction`.

25 changes: 16 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -57,6 +57,10 @@ Note that `mvn install` is required to build and run the examples.

mvn clean

**If facing errors like ` module java.base does not "opens java.nio" to unnamed module`**

export JAVA_TOOL_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED"

### Create a configuration file

In order to run the examples you will need to create an SDK config file.
@@ -65,14 +69,17 @@ include the following:

Sample configuration using OAuth client credentials:

[default]
host = azure.relationalai.com
port = <api-port> # optional, default: 443
scheme = <scheme> # optional, default: https
client_id = <your client_id>
client_secret = <your client secret>
client_credentials_url = <account login URL> # optional
# default: https://login.relationalai.com/oauth/token
```conf
[default]
host = azure.relationalai.com
client_id = <your client_id>
client_secret = <your client secret>
# the following are all optional, with default values shown
# port = 443
# scheme = https
# client_credentials_url = https://login.relationalai.com/oauth/token
```

Client credentials can be created using the RAI console at
https://console.relationalai.com/login
@@ -86,7 +93,7 @@ In order to use the `rai-sdk-java`, you need add this dependency to your project
<dependency>
<groupId>com.relationalai</groupId>
<artifactId>rai-sdk</artifactId>
<version>0.2.2-alpha</version>
<version>0.4.2-alpha</version>
</dependency>

You need also to point maven to the SDK GitHub packages repository in the project's POM:
11 changes: 6 additions & 5 deletions config.spec
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
[default]
region = us-east
host = azure.relationalai.com
port = 443
client_id = <client-id>
client_secret = <client-secret>
#client_credentials_url = https://login.relationalai.com/oauth/token
client_id = <your client_id>
client_secret = <your client secret>

# the following are all optional, with default values shown
# port = 443
# scheme = https
# client_credentials_url = https://login.relationalai.com/oauth/token
7 changes: 6 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@
<description>The RelationalAI Software Development Kit (SDK) for Java</description>
<groupId>com.relationalai</groupId>
<artifactId>rai-sdk-pom</artifactId>
<version>0.2.2-alpha</version>
<version>0.4.2-alpha</version>
<packaging>pom</packaging>
<url></url>

@@ -31,9 +31,14 @@
</modules>

<properties>
<revision>0.2.2-alpha</revision>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<jsoniter.version>0.9.19</jsoniter.version>
<apache.arrow.version>9.0.0</apache.arrow.version>
<protobuf.version>3.21.1</protobuf.version>
<protobuf-java-format.version>1.4</protobuf-java-format.version>
</properties>

<build>
2 changes: 1 addition & 1 deletion rai-sdk-examples/pom.xml
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@
<parent>
<groupId>com.relationalai</groupId>
<artifactId>rai-sdk-pom</artifactId>
<version>0.2.2-alpha</version>
<version>0.4.2-alpha</version>
</parent>

<name>RelationalAI SDK for Java Examples</name>
2 changes: 1 addition & 1 deletion rai-sdk-examples/run-all
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ set -e
./run GetModel $DATABASE $ENGINE stdlib

# exec
QUERY='x, x^2, x^3, x^4 from x in {1; 2; 3; 4; 5}'
QUERY='def output(x, x2, x3, x4): {1; 2; 3; 4; 5}(x) and x2 = x^2 and x3 = x^3 and x4 = x^4'
./run Execute -c "\"$QUERY\"" $DATABASE $ENGINE
./run Execute -c "\"$QUERY\"" -readonly $DATABASE $ENGINE
#./run ./show-result.jl $DATABASE $ENGINE
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.relationalai.examples;

import com.relationalai.Client;
import com.relationalai.Config;
import com.relationalai.HttpError;
import com.relationalai.Json;

import java.io.IOException;

public class CancelTransaction implements Runnable {
String id, profile;

public void parseArgs(String[] args) {
var c = Command.create("CancelTransaction")
.addArgument("id")
.addOption("profile", "config profile (default: default)")
.parseArgs(args);
this.id = c.getValue("id");
this.profile = c.getValue("profile");
}

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);

var rsp = client.cancelTransaction(id);
Json.print(rsp);
}
}
Original file line number Diff line number Diff line change
@@ -41,7 +41,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);
var rsp = client.cloneDatabase(database, engine, source);
Json.print(rsp, 4);
Original file line number Diff line number Diff line change
@@ -41,7 +41,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);
var rsp = client.createDatabase(database, engine, overwrite);
Json.print(rsp, 4);
Original file line number Diff line number Diff line change
@@ -41,7 +41,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);
var rsp = wait
? client.createEngineWait(engine, size)
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);
var rsp = client.createOAuthClient(name, permissions);
Json.print(rsp, 4);
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);
var rsp = client.createUser(email, roles);
Json.print(rsp, 4);
Original file line number Diff line number Diff line change
@@ -35,7 +35,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);
var rsp = client.deleteDatabase(database);
Json.print(rsp, 4);
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);
var rsp = wait
? client.deleteEngineWait(engine)
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", this.profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, this.profile);
var client = new Client(cfg);
var rsp = client.deleteModel(database, engine, model);
Json.print(rsp, 4);
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@ public void parseArgs(String[] args) {

public void run(String[] args) throws HttpError, InterruptedException, IOException {
parseArgs(args);
var cfg = Config.loadConfig("~/.rai/config", profile);
var cfg = Config.loadConfig(DEFAULT_CONFIG_PATH, profile);
var client = new Client(cfg);
var rsp = client.deleteOAuthClient(id);
Json.print(rsp, 4);
Loading