Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get rid of calls to Json static methods #2165

Merged
merged 1 commit into from
Aug 27, 2024
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.smallrye.graphql.client.vertx.typesafe;

import static io.smallrye.graphql.client.impl.JsonProviderHolder.JSON_PROVIDER;
import static java.util.stream.Collectors.*;
import static java.util.stream.Collectors.toList;

Expand All @@ -24,7 +25,6 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;

import jakarta.json.Json;
import jakarta.json.JsonArray;
import jakarta.json.JsonArrayBuilder;
import jakarta.json.JsonBuilderFactory;
Expand Down Expand Up @@ -64,7 +64,7 @@ class VertxTypesafeGraphQLClientProxy {

private static final Logger log = Logger.getLogger(VertxTypesafeGraphQLClientProxy.class);

private static final JsonBuilderFactory jsonObjectFactory = Json.createBuilderFactory(null);
private static final JsonBuilderFactory jsonObjectFactory = JSON_PROVIDER.createBuilderFactory(null);

private final ConcurrentMap<String, String> queryCache = new ConcurrentHashMap<>();

Expand Down Expand Up @@ -342,60 +342,60 @@ private JsonValue value(Object value) {

private JsonValue scalarValue(Object value) {
if (value instanceof String) {
return Json.createValue((String) value);
return JSON_PROVIDER.createValue((String) value);
}
if (value instanceof java.sql.Date) {
return Json.createValue(value.toString());
return JSON_PROVIDER.createValue(value.toString());
}
if (value instanceof Date) {
return Json.createValue(((Date) value).toInstant().toString());
return JSON_PROVIDER.createValue(((Date) value).toInstant().toString());
}
if (value instanceof Calendar) {
return Json.createValue(((Calendar) value).toInstant().toString());
return JSON_PROVIDER.createValue(((Calendar) value).toInstant().toString());
}
if (value instanceof Enum) {
return Json.createValue(((Enum<?>) value).name());
return JSON_PROVIDER.createValue(((Enum<?>) value).name());
}
if (value instanceof Boolean) {
return ((Boolean) value) ? JsonValue.TRUE : JsonValue.FALSE;
}
if (value instanceof Byte) {
return Json.createValue((Byte) value);
return JSON_PROVIDER.createValue((Byte) value);
}
if (value instanceof Short) {
return Json.createValue((Short) value);
return JSON_PROVIDER.createValue((Short) value);
}
if (value instanceof Integer) {
return Json.createValue((Integer) value);
return JSON_PROVIDER.createValue((Integer) value);
}
if (value instanceof Long) {
return Json.createValue((Long) value);
return JSON_PROVIDER.createValue((Long) value);
}
if (value instanceof Double) {
return Json.createValue((Double) value);
return JSON_PROVIDER.createValue((Double) value);
}
if (value instanceof Float) {
return Json.createValue((Float) value);
return JSON_PROVIDER.createValue((Float) value);
}
if (value instanceof BigInteger) {
return Json.createValue((BigInteger) value);
return JSON_PROVIDER.createValue((BigInteger) value);
}
if (value instanceof BigDecimal) {
return Json.createValue((BigDecimal) value);
return JSON_PROVIDER.createValue((BigDecimal) value);
}
if (value instanceof OptionalInt) {
OptionalInt optionalValue = ((OptionalInt) value);
return ((optionalValue.isPresent()) ? Json.createValue(optionalValue.getAsInt()) : JsonValue.NULL);
return ((optionalValue.isPresent()) ? JSON_PROVIDER.createValue(optionalValue.getAsInt()) : JsonValue.NULL);
}
if (value instanceof OptionalLong) {
OptionalLong optionalValue = ((OptionalLong) value);
return ((optionalValue.isPresent()) ? Json.createValue(optionalValue.getAsLong()) : JsonValue.NULL);
return ((optionalValue.isPresent()) ? JSON_PROVIDER.createValue(optionalValue.getAsLong()) : JsonValue.NULL);
}
if (value instanceof OptionalDouble) {
OptionalDouble optionalValue = ((OptionalDouble) value);
return ((optionalValue.isPresent()) ? Json.createValue(optionalValue.getAsDouble()) : JsonValue.NULL);
return ((optionalValue.isPresent()) ? JSON_PROVIDER.createValue(optionalValue.getAsDouble()) : JsonValue.NULL);
}
return Json.createValue(value.toString());
return JSON_PROVIDER.createValue(value.toString());
}

private JsonArray arrayValue(Object value) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.smallrye.graphql.client.vertx.websocket.graphqltransportws;

import static io.smallrye.graphql.client.impl.JsonProviderHolder.JSON_PROVIDER;

import java.io.StringReader;
import java.time.Duration;
import java.util.HashMap;
Expand All @@ -9,7 +11,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;

import jakarta.json.Json;
import jakarta.json.JsonArray;
import jakarta.json.JsonBuilderFactory;
import jakarta.json.JsonObject;
Expand Down Expand Up @@ -43,8 +44,8 @@
public class GraphQLTransportWSSubprotocolHandler implements WebSocketSubprotocolHandler {

private static final Logger log = Logger.getLogger(GraphQLTransportWSSubprotocolHandler.class);
private static final JsonBuilderFactory jsonBuilderFactory = Json.createBuilderFactory(null);
private static final JsonReaderFactory jsonReaderFactory = Json.createReaderFactory(null);
private static final JsonBuilderFactory jsonBuilderFactory = JSON_PROVIDER.createBuilderFactory(null);
private static final JsonReaderFactory jsonReaderFactory = JSON_PROVIDER.createReaderFactory(null);

private final Integer connectionInitializationTimeout;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package io.smallrye.graphql.client.vertx.websocket.graphqlws;

import static io.smallrye.graphql.client.impl.JsonProviderHolder.JSON_PROVIDER;

import java.io.StringReader;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;

import jakarta.json.Json;
import jakarta.json.JsonBuilderFactory;
import jakarta.json.JsonObject;
import jakarta.json.JsonObjectBuilder;
Expand Down Expand Up @@ -40,8 +41,8 @@
public class GraphQLWSSubprotocolHandler implements WebSocketSubprotocolHandler {

private static final Logger log = Logger.getLogger(GraphQLWSSubprotocolHandler.class);
private static final JsonBuilderFactory jsonBuilderFactory = Json.createBuilderFactory(null);
private static final JsonReaderFactory jsonReaderFactory = Json.createReaderFactory(null);
private static final JsonBuilderFactory jsonBuilderFactory = JSON_PROVIDER.createBuilderFactory(null);
private static final JsonReaderFactory jsonReaderFactory = JSON_PROVIDER.createReaderFactory(null);

private final Integer subscriptionInitializationTimeout;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.smallrye.graphql.client.impl;

import jakarta.json.spi.JsonProvider;

// A central place to get the JsonProvider to avoid calling `JsonProvider.provider()` many times
// due to associated performance costs.
public class JsonProviderHolder {

public static final JsonProvider JSON_PROVIDER = JsonProvider.provider();

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package io.smallrye.graphql.client.impl;

import static io.smallrye.graphql.client.impl.JsonProviderHolder.JSON_PROVIDER;

import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

import jakarta.json.Json;
import jakarta.json.JsonBuilderFactory;
import jakarta.json.JsonObject;
import jakarta.json.JsonObjectBuilder;
Expand All @@ -16,7 +17,7 @@
import io.smallrye.graphql.client.Request;

public class RequestImpl implements Request {
private static final JsonBuilderFactory JSON = Json.createBuilderFactory(null);
private static final JsonBuilderFactory JSON = JSON_PROVIDER.createBuilderFactory(null);
private static final Jsonb JSONB = JsonbBuilder.create();

private final String document;
Expand Down Expand Up @@ -72,7 +73,7 @@ private JsonObject _formatJsonVariables() {
} else if (v == null) {
varBuilder.addNull(k);
} else {
varBuilder.add(k, Json.createReader(new StringReader(JSONB.toJson(v))).read());
varBuilder.add(k, JSON_PROVIDER.createReader(new StringReader(JSONB.toJson(v))).read());
}
});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package io.smallrye.graphql.client.impl;

import static io.smallrye.graphql.client.impl.JsonProviderHolder.JSON_PROVIDER;

import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import jakarta.json.Json;
import jakarta.json.JsonArray;
import jakarta.json.JsonNumber;
import jakarta.json.JsonObject;
Expand All @@ -23,7 +24,7 @@

public class ResponseReader {
private static final Logger LOG = Logger.getLogger(ResponseReader.class.getName());
private static final JsonReaderFactory jsonReaderFactory = Json.createReaderFactory(null);
private static final JsonReaderFactory jsonReaderFactory = JSON_PROVIDER.createReaderFactory(null);

/**
* Parse a GraphQL response from the input string.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.smallrye.graphql.client.impl.typesafe;

import static io.smallrye.graphql.client.impl.JsonProviderHolder.JSON_PROVIDER;
import static io.smallrye.graphql.client.impl.typesafe.json.JsonUtils.isListOf;
import static jakarta.json.stream.JsonCollectors.toJsonArray;
import static java.util.stream.Collectors.joining;
Expand All @@ -8,7 +9,6 @@
import java.util.Map;
import java.util.stream.Collectors;

import jakarta.json.Json;
import jakarta.json.JsonArray;
import jakarta.json.JsonArrayBuilder;
import jakarta.json.JsonBuilderFactory;
Expand All @@ -28,7 +28,7 @@
import io.smallrye.graphql.client.typesafe.api.TypesafeResponse;

public class ResultBuilder {
private static final JsonBuilderFactory jsonBuilderFactory = Json.createBuilderFactory(null);
private static final JsonBuilderFactory jsonBuilderFactory = JSON_PROVIDER.createBuilderFactory(null);

private final MethodInvocation method;
private final JsonObject response;
Expand Down Expand Up @@ -115,7 +115,7 @@ private boolean apply(JsonValue error) {
List<Object> path = getPath(error);
if (data == null || path == null)
return false;
JsonPointer pointer = Json.createPointer(path.stream().map(Object::toString).collect(joining("/", "/", "")));
JsonPointer pointer = JSON_PROVIDER.createPointer(path.stream().map(Object::toString).collect(joining("/", "/", "")));
if (!exists(pointer))
return false;
JsonArrayBuilder errors = jsonBuilderFactory.createArrayBuilder();
Expand Down Expand Up @@ -152,6 +152,7 @@ private static List<Object> getPath(JsonValue jsonValue) {
return (jsonArray == null) ? null : jsonArray.stream().map(JsonUtils::toValue).collect(Collectors.toList());
}

private static final JsonPatch ERROR_MARK = Json.createPatchBuilder().add("/__typename", ErrorOr.class.getSimpleName())
private static final JsonPatch ERROR_MARK = JSON_PROVIDER.createPatchBuilder()
.add("/__typename", ErrorOr.class.getSimpleName())
.build();
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.smallrye.graphql.execution;

import static io.smallrye.graphql.JsonProviderHolder.JSON_PROVIDER;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
Expand All @@ -9,7 +10,6 @@
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.json.Json;
import jakarta.json.JsonArray;
import jakarta.json.JsonObject;
import jakarta.json.JsonObjectBuilder;
Expand Down Expand Up @@ -365,7 +365,7 @@ private JsonArray executeAndGetError(String graphQL) {
}

private JsonObject toJsonObject(String graphQL) {
JsonObjectBuilder builder = Json.createObjectBuilder();
JsonObjectBuilder builder = JSON_PROVIDER.createObjectBuilder();
builder.add("query", graphQL);
return builder.build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.smallrye.graphql.entry.http;

import static io.smallrye.graphql.JsonProviderHolder.JSON_PROVIDER;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
Expand All @@ -15,7 +17,6 @@
import java.util.stream.Collectors;

import jakarta.inject.Inject;
import jakarta.json.Json;
import jakarta.json.JsonObject;
import jakarta.json.JsonObjectBuilder;
import jakarta.json.JsonReader;
Expand All @@ -37,7 +38,7 @@
public class ExecutionServlet extends HttpServlet {
private static final long serialVersionUID = -2859915918802356120L;

private static final JsonReaderFactory jsonReaderFactory = Json.createReaderFactory(null);
private static final JsonReaderFactory jsonReaderFactory = JSON_PROVIDER.createReaderFactory(null);

@Inject
ExecutionService executionService;
Expand Down Expand Up @@ -74,7 +75,8 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
if (request.getQueryString() != null && !request.getQueryString().isEmpty()
&& config.isAllowPostWithQueryParameters()) {
JsonObject jsonObjectFromQueryParameters = getJsonObjectFromQueryParameters(request);
JsonObject mergedJsonObject = Json.createMergePatch(jsonObjectFromQueryParameters).apply(jsonObjectFromBody)
JsonObject mergedJsonObject = JSON_PROVIDER.createMergePatch(jsonObjectFromQueryParameters)
.apply(jsonObjectFromBody)
.asJsonObject();
executionService.executeSync(mergedJsonObject, metaData, new HttpServletResponseWriter(response));
} else {
Expand All @@ -87,7 +89,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
}

private JsonObject getJsonObjectFromQueryParameters(HttpServletRequest request) throws UnsupportedEncodingException {
JsonObjectBuilder input = Json.createObjectBuilder();
JsonObjectBuilder input = JSON_PROVIDER.createObjectBuilder();
// Query
String query = request.getParameter(QUERY);
if (query != null && !query.isEmpty()) {
Expand Down Expand Up @@ -123,7 +125,7 @@ private JsonObject getJsonObjectFromBody(HttpServletRequest request) throws IOEx
// If the content type is application/graphql, the query is in the body
if (contentType != null && contentType.startsWith(APPLICATION_GRAPHQL)) {
String query = bufferedReader.lines().collect(Collectors.joining("\n"));
JsonObjectBuilder input = Json.createObjectBuilder();
JsonObjectBuilder input = JSON_PROVIDER.createObjectBuilder();
input.add(QUERY, query);
return input.build();
// Else we expect a Json in the content
Expand All @@ -139,7 +141,7 @@ private static JsonObject toJsonObject(String jsonString) {
if (jsonString == null || jsonString.isEmpty()) {
return null;
}
try (JsonReader jsonReader = Json.createReader(new StringReader(jsonString))) {
try (JsonReader jsonReader = JSON_PROVIDER.createReader(new StringReader(jsonString))) {
return jsonReader.readObject();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package io.smallrye.graphql.entry.http;

import static io.smallrye.graphql.JsonProviderHolder.JSON_PROVIDER;

import java.io.IOException;

import jakarta.json.Json;
import jakarta.json.JsonWriter;
import jakarta.json.JsonWriterFactory;
import jakarta.servlet.http.HttpServletResponse;
Expand All @@ -17,7 +18,7 @@
*/
public class HttpServletResponseWriter implements ExecutionResponseWriter {
private static final String APPLICATION_JSON_UTF8 = "application/json;charset=UTF-8";
private static final JsonWriterFactory jsonWriterFactory = Json.createWriterFactory(null);
private static final JsonWriterFactory jsonWriterFactory = JSON_PROVIDER.createWriterFactory(null);

private final HttpServletResponse response;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.smallrye.graphql;

import jakarta.json.spi.JsonProvider;

// A central place to get the JsonProvider to avoid calling `JsonProvider.provider()` many times
// due to associated performance costs.
public class JsonProviderHolder {

public static final JsonProvider JSON_PROVIDER = JsonProvider.provider();

}
Loading
Loading