Skip to content

Commit

Permalink
Get rid of calls to Json static methods
Browse files Browse the repository at this point in the history
  • Loading branch information
jmartisk committed Aug 27, 2024
1 parent e64a12e commit 4c050ce
Show file tree
Hide file tree
Showing 21 changed files with 116 additions and 80 deletions.
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

0 comments on commit 4c050ce

Please sign in to comment.