Skip to content

Commit

Permalink
Move ObjectMapper initialisation
Browse files Browse the repository at this point in the history
  • Loading branch information
StefanBratanov committed Jan 14, 2024
1 parent 7ae2ab7 commit fd70402
Show file tree
Hide file tree
Showing 16 changed files with 65 additions and 136 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -20,12 +19,8 @@ public final class AssistantsClient extends OpenAIAssistantsClient {
private final URI baseUrl;

AssistantsClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
this.baseUrl = baseUrl;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.net.URI;
Expand All @@ -21,13 +20,8 @@ public final class AudioClient extends OpenAIClient {

private final URI baseUrl;

AudioClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
AudioClient(URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
this.baseUrl = baseUrl;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -20,13 +19,8 @@ public final class ChatClient extends OpenAIClient {

private final URI endpoint;

ChatClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
ChatClient(URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
endpoint = baseUrl.resolve(Endpoint.CHAT.getPath());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -18,12 +17,8 @@ public final class EmbeddingsClient extends OpenAIClient {
private final URI endpoint;

EmbeddingsClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
endpoint = baseUrl.resolve(Endpoint.EMBEDDINCS.getPath());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -18,13 +17,8 @@ public final class FilesClient extends OpenAIClient {

private final URI baseUrl;

FilesClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
FilesClient(URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
this.baseUrl = baseUrl;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -19,12 +18,8 @@ public final class FineTuningClient extends OpenAIClient {
private final URI baseUrl;

FineTuningClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
this.baseUrl = baseUrl;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -17,13 +16,8 @@ public final class ImagesClient extends OpenAIClient {

private final URI baseUrl;

ImagesClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
ImagesClient(URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
this.baseUrl = baseUrl;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -20,13 +19,8 @@ public final class MessagesClient extends OpenAIAssistantsClient {

private final URI baseUrl;

MessagesClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
MessagesClient(URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
this.baseUrl = baseUrl;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -18,13 +17,8 @@ public final class ModelsClient extends OpenAIClient {

private final URI baseUrl;

ModelsClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
ModelsClient(URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
this.baseUrl = baseUrl;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -17,12 +16,8 @@ public final class ModerationsClient extends OpenAIClient {
private final URI endpoint;

ModerationsClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
endpoint = baseUrl.resolve(Endpoint.MODERATIONS.getPath());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;

class ObjectMapperSingleton {

private static ObjectMapper INSTANCE;

private ObjectMapperSingleton() {}

static ObjectMapper getInstance() {
if (INSTANCE == null) {
INSTANCE = new ObjectMapper();
INSTANCE.registerModule(new Jdk8Module());
INSTANCE.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
INSTANCE.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
INSTANCE.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
}
return INSTANCE;
}
}
42 changes: 12 additions & 30 deletions src/main/java/io/github/stefanbratanov/jvm/openai/OpenAI.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import java.net.URI;
import java.net.http.HttpClient;
import java.util.Optional;
Expand All @@ -16,15 +11,6 @@
*/
public final class OpenAI {

private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

static {
OBJECT_MAPPER.registerModule(new Jdk8Module());
OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
OBJECT_MAPPER.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
OBJECT_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
}

private final AudioClient audioClient;
private final ChatClient chatClient;
private final EmbeddingsClient embeddingsClient;
Expand All @@ -39,22 +25,18 @@ public final class OpenAI {
private final RunsClient runsClient;

private OpenAI(URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
audioClient = new AudioClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
chatClient = new ChatClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
embeddingsClient =
new EmbeddingsClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
fineTuningClient =
new FineTuningClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
filesClient = new FilesClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
imagesClient = new ImagesClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
modelsClient = new ModelsClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
moderationsClient =
new ModerationsClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
assistantsClient =
new AssistantsClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
threadsClient = new ThreadsClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
messagesClient = new MessagesClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
runsClient = new RunsClient(baseUrl, apiKey, organization, httpClient, OBJECT_MAPPER);
audioClient = new AudioClient(baseUrl, apiKey, organization, httpClient);
chatClient = new ChatClient(baseUrl, apiKey, organization, httpClient);
embeddingsClient = new EmbeddingsClient(baseUrl, apiKey, organization, httpClient);
fineTuningClient = new FineTuningClient(baseUrl, apiKey, organization, httpClient);
filesClient = new FilesClient(baseUrl, apiKey, organization, httpClient);
imagesClient = new ImagesClient(baseUrl, apiKey, organization, httpClient);
modelsClient = new ModelsClient(baseUrl, apiKey, organization, httpClient);
moderationsClient = new ModerationsClient(baseUrl, apiKey, organization, httpClient);
assistantsClient = new AssistantsClient(baseUrl, apiKey, organization, httpClient);
threadsClient = new ThreadsClient(baseUrl, apiKey, organization, httpClient);
messagesClient = new MessagesClient(baseUrl, apiKey, organization, httpClient);
runsClient = new RunsClient(baseUrl, apiKey, organization, httpClient);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.util.Map;
Expand All @@ -12,12 +11,8 @@
*/
class OpenAIAssistantsClient extends OpenAIClient {

OpenAIAssistantsClient(
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
OpenAIAssistantsClient(String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,11 @@ abstract class OpenAIClient {
private final String[] authenticationHeaders;

protected final HttpClient httpClient;
protected final ObjectMapper objectMapper;
protected final ObjectMapper objectMapper = ObjectMapperSingleton.getInstance();

OpenAIClient(
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
OpenAIClient(String apiKey, Optional<String> organization, HttpClient httpClient) {
this.authenticationHeaders = getAuthenticationHeaders(apiKey, organization);
this.httpClient = httpClient;
this.objectMapper = objectMapper;
}

HttpRequest.Builder newHttpRequestBuilder(String... headers) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.stefanbratanov.jvm.openai;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
Expand All @@ -20,13 +19,8 @@ public final class RunsClient extends OpenAIAssistantsClient {

private final URI baseUrl;

RunsClient(
URI baseUrl,
String apiKey,
Optional<String> organization,
HttpClient httpClient,
ObjectMapper objectMapper) {
super(apiKey, organization, httpClient, objectMapper);
RunsClient(URI baseUrl, String apiKey, Optional<String> organization, HttpClient httpClient) {
super(apiKey, organization, httpClient);
this.baseUrl = baseUrl;
}

Expand Down
Loading

0 comments on commit fd70402

Please sign in to comment.