Skip to content

Commit

Permalink
Revert "Extract json, nkey and jwt utils to libraries (#1061)" (#1071)
Browse files Browse the repository at this point in the history
This reverts commit 7b1b223.
  • Loading branch information
scottf authored Feb 1, 2024
1 parent 7b1b223 commit 4c67c1a
Show file tree
Hide file tree
Showing 51 changed files with 4,379 additions and 413 deletions.
5 changes: 1 addition & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@ repositories {
}

dependencies {
implementation 'io.nats:nkeys-java:1.5.2'
implementation 'io.nats:jnats-json:1.5.2'
implementation 'io.nats:jwt-java:1.5.2'

implementation 'net.i2p.crypto:eddsa:0.3.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.0'
testImplementation 'io.nats:jnats-server-runner:1.2.8'
testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.12.3'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import java.time.Duration;
import java.util.List;

import static io.nats.client.support.JsonWriteUtils.printFormatted;
import static io.nats.client.support.JsonUtils.printFormatted;
import static io.nats.examples.jetstream.NatsJsUtils.publish;

/**
Expand Down
741 changes: 741 additions & 0 deletions src/main/java/io/nats/client/NKey.java

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions src/main/java/io/nats/client/PullRequestOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
package io.nats.client;

import io.nats.client.support.JsonSerializable;
import io.nats.client.support.JsonUtils;

import java.time.Duration;

import static io.nats.client.support.ApiConstants.*;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.Validator.validateGtZero;

/**
Expand All @@ -42,13 +42,13 @@ public PullRequestOptions(Builder b) {

@Override
public String toJson() {
StringBuilder sb = beginJson();
addField(sb, BATCH, batchSize);
addField(sb, MAX_BYTES, maxBytes);
addFldWhenTrue(sb, NO_WAIT, noWait);
addFieldAsNanos(sb, EXPIRES, expiresIn);
addFieldAsNanos(sb, IDLE_HEARTBEAT, idleHeartbeat);
return endJson(sb).toString();
StringBuilder sb = JsonUtils.beginJson();
JsonUtils.addField(sb, BATCH, batchSize);
JsonUtils.addField(sb, MAX_BYTES, maxBytes);
JsonUtils.addFldWhenTrue(sb, NO_WAIT, noWait);
JsonUtils.addFieldAsNanos(sb, EXPIRES, expiresIn);
JsonUtils.addFieldAsNanos(sb, IDLE_HEARTBEAT, idleHeartbeat);
return JsonUtils.endJson(sb).toString();
}

/**
Expand Down
10 changes: 6 additions & 4 deletions src/main/java/io/nats/client/PurgeOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@
package io.nats.client;

import io.nats.client.support.JsonSerializable;
import io.nats.client.support.JsonUtils;

import static io.nats.client.support.ApiConstants.*;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.JsonUtils.beginJson;
import static io.nats.client.support.JsonUtils.endJson;
import static io.nats.client.support.Validator.validateSubject;

/**
Expand All @@ -37,9 +39,9 @@ private PurgeOptions(String subject, long seq, long keep) {
@Override
public String toJson() {
StringBuilder sb = beginJson();
addField(sb, FILTER, subject);
addField(sb, SEQ, seq);
addField(sb, KEEP, keep);
JsonUtils.addField(sb, FILTER, subject);
JsonUtils.addField(sb, SEQ, seq);
JsonUtils.addField(sb, KEEP, keep);
return endJson(sb).toString();
}

Expand Down
10 changes: 4 additions & 6 deletions src/main/java/io/nats/client/api/ApiResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,12 @@

import io.nats.client.JetStreamApiException;
import io.nats.client.Message;
import io.nats.client.support.JsonParseException;
import io.nats.client.support.JsonParser;
import io.nats.client.support.JsonValue;
import io.nats.client.support.JsonValueUtils;
import io.nats.client.support.*;

import static io.nats.client.support.ApiConstants.ERROR;
import static io.nats.client.support.ApiConstants.TYPE;
import static io.nats.client.support.JsonValueUtils.readString;
import static io.nats.client.support.JsonValueUtils.readValue;
import static io.nats.client.support.JsonWriteUtils.toKey;

public abstract class ApiResponse<T> {

Expand Down Expand Up @@ -122,6 +118,8 @@ public Error getErrorObject() {

@Override
public String toString() {
return jv == null ? toKey(getClass()) + "\":null" : jv.toString(getClass());
return jv == null
? JsonUtils.toKey(getClass()) + "\":null"
: jv.toString(getClass());
}
}
62 changes: 32 additions & 30 deletions src/main/java/io/nats/client/api/ConsumerConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,17 @@
import io.nats.client.PushSubscribeOptions;
import io.nats.client.support.ApiConstants;
import io.nats.client.support.JsonSerializable;
import io.nats.client.support.JsonUtils;
import io.nats.client.support.JsonValue;

import java.time.Duration;
import java.time.ZonedDateTime;
import java.util.*;

import static io.nats.client.support.ApiConstants.*;
import static io.nats.client.support.JsonUtils.beginJson;
import static io.nats.client.support.JsonUtils.endJson;
import static io.nats.client.support.JsonValueUtils.*;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.NatsJetStreamClientError.JsConsumerNameDurableMismatch;
import static io.nats.client.support.Validator.*;

Expand Down Expand Up @@ -202,39 +204,39 @@ protected ConsumerConfiguration(Builder b)
*/
public String toJson() {
StringBuilder sb = beginJson();
addField(sb, DESCRIPTION, description);
addField(sb, DURABLE_NAME, durable);
addField(sb, NAME, name);
addField(sb, DELIVER_SUBJECT, deliverSubject);
addField(sb, DELIVER_GROUP, deliverGroup);
addField(sb, DELIVER_POLICY, GetOrDefault(deliverPolicy).toString());
addFieldWhenGtZero(sb, OPT_START_SEQ, startSeq);
addField(sb, OPT_START_TIME, startTime);
addField(sb, ACK_POLICY, GetOrDefault(ackPolicy).toString());
addFieldAsNanos(sb, ACK_WAIT, ackWait);
addFieldWhenGtZero(sb, MAX_DELIVER, maxDeliver);
addField(sb, MAX_ACK_PENDING, maxAckPending);
addField(sb, REPLAY_POLICY, GetOrDefault(replayPolicy).toString());
addField(sb, SAMPLE_FREQ, sampleFrequency);
addFieldWhenGtZero(sb, RATE_LIMIT_BPS, rateLimit);
addFieldAsNanos(sb, IDLE_HEARTBEAT, idleHeartbeat);
addFldWhenTrue(sb, FLOW_CONTROL, flowControl);
addField(sb, ApiConstants.MAX_WAITING, maxPullWaiting);
addFldWhenTrue(sb, HEADERS_ONLY, headersOnly);
addField(sb, MAX_BATCH, maxBatch);
addField(sb, MAX_BYTES, maxBytes);
addFieldAsNanos(sb, MAX_EXPIRES, maxExpires);
addFieldAsNanos(sb, INACTIVE_THRESHOLD, inactiveThreshold);
addDurations(sb, BACKOFF, backoff);
addField(sb, NUM_REPLICAS, numReplicas);
addField(sb, MEM_STORAGE, memStorage);
addField(sb, METADATA, metadata);
JsonUtils.addField(sb, DESCRIPTION, description);
JsonUtils.addField(sb, DURABLE_NAME, durable);
JsonUtils.addField(sb, NAME, name);
JsonUtils.addField(sb, DELIVER_SUBJECT, deliverSubject);
JsonUtils.addField(sb, DELIVER_GROUP, deliverGroup);
JsonUtils.addField(sb, DELIVER_POLICY, GetOrDefault(deliverPolicy).toString());
JsonUtils.addFieldWhenGtZero(sb, OPT_START_SEQ, startSeq);
JsonUtils.addField(sb, OPT_START_TIME, startTime);
JsonUtils.addField(sb, ACK_POLICY, GetOrDefault(ackPolicy).toString());
JsonUtils.addFieldAsNanos(sb, ACK_WAIT, ackWait);
JsonUtils.addFieldWhenGtZero(sb, MAX_DELIVER, maxDeliver);
JsonUtils.addField(sb, MAX_ACK_PENDING, maxAckPending);
JsonUtils.addField(sb, REPLAY_POLICY, GetOrDefault(replayPolicy).toString());
JsonUtils.addField(sb, SAMPLE_FREQ, sampleFrequency);
JsonUtils.addFieldWhenGtZero(sb, RATE_LIMIT_BPS, rateLimit);
JsonUtils.addFieldAsNanos(sb, IDLE_HEARTBEAT, idleHeartbeat);
JsonUtils.addFldWhenTrue(sb, FLOW_CONTROL, flowControl);
JsonUtils.addField(sb, ApiConstants.MAX_WAITING, maxPullWaiting);
JsonUtils.addFldWhenTrue(sb, HEADERS_ONLY, headersOnly);
JsonUtils.addField(sb, MAX_BATCH, maxBatch);
JsonUtils.addField(sb, MAX_BYTES, maxBytes);
JsonUtils.addFieldAsNanos(sb, MAX_EXPIRES, maxExpires);
JsonUtils.addFieldAsNanos(sb, INACTIVE_THRESHOLD, inactiveThreshold);
JsonUtils.addDurations(sb, BACKOFF, backoff);
JsonUtils.addField(sb, NUM_REPLICAS, numReplicas);
JsonUtils.addField(sb, MEM_STORAGE, memStorage);
JsonUtils.addField(sb, METADATA, metadata);
if (filterSubjects != null) {
if (filterSubjects.size() > 1) {
addStrings(sb, FILTER_SUBJECTS, filterSubjects);
JsonUtils.addStrings(sb, FILTER_SUBJECTS, filterSubjects);
}
else if (filterSubjects.size() == 1) {
addField(sb, FILTER_SUBJECT, filterSubjects.get(0));
JsonUtils.addField(sb, FILTER_SUBJECT, filterSubjects.get(0));
}
}
return endJson(sb).toString();
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/io/nats/client/api/ConsumerCreateRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@
package io.nats.client.api;

import io.nats.client.support.JsonSerializable;
import io.nats.client.support.JsonUtils;

import static io.nats.client.support.ApiConstants.CONFIG;
import static io.nats.client.support.ApiConstants.STREAM_NAME;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.JsonUtils.*;

/**
* Object used to make a request to create a consumer. Used Internally
Expand All @@ -44,7 +45,7 @@ public String toJson() {
StringBuilder sb = beginJson();

addField(sb, STREAM_NAME, streamName);
addField(sb, CONFIG, config);
JsonUtils.addField(sb, CONFIG, config);

return endJson(sb).toString();
}
Expand Down
8 changes: 5 additions & 3 deletions src/main/java/io/nats/client/api/ConsumerLimits.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,18 @@
package io.nats.client.api;

import io.nats.client.support.JsonSerializable;
import io.nats.client.support.JsonUtils;
import io.nats.client.support.JsonValue;

import java.time.Duration;

import static io.nats.client.api.ConsumerConfiguration.*;
import static io.nats.client.support.ApiConstants.INACTIVE_THRESHOLD;
import static io.nats.client.support.ApiConstants.MAX_ACK_PENDING;
import static io.nats.client.support.JsonUtils.beginJson;
import static io.nats.client.support.JsonUtils.endJson;
import static io.nats.client.support.JsonValueUtils.readInteger;
import static io.nats.client.support.JsonValueUtils.readNanos;
import static io.nats.client.support.JsonWriteUtils.*;

/**
* ConsumerLimits
Expand Down Expand Up @@ -64,8 +66,8 @@ public long getMaxAckPending() {

public String toJson() {
StringBuilder sb = beginJson();
addFieldAsNanos(sb, INACTIVE_THRESHOLD, inactiveThreshold);
addField(sb, MAX_ACK_PENDING, maxAckPending);
JsonUtils.addFieldAsNanos(sb, INACTIVE_THRESHOLD, inactiveThreshold);
JsonUtils.addField(sb, MAX_ACK_PENDING, maxAckPending);
return endJson(sb).toString();
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/nats/client/api/External.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import static io.nats.client.support.ApiConstants.API;
import static io.nats.client.support.ApiConstants.DELIVER;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.JsonUtils.*;

/**
* External configuration referencing a stream source in another account
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/nats/client/api/MessageDeleteRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

import static io.nats.client.support.ApiConstants.NO_ERASE;
import static io.nats.client.support.ApiConstants.SEQ;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.JsonUtils.*;

/**
* Object used to make a request for message delete requests.
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/nats/client/api/MessageGetRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import io.nats.client.support.JsonSerializable;

import static io.nats.client.support.ApiConstants.*;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.JsonUtils.*;

/**
* Object used to make a request for special message get requests.
Expand Down
30 changes: 15 additions & 15 deletions src/main/java/io/nats/client/api/MessageInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@
import io.nats.client.impl.Headers;
import io.nats.client.support.DateTimeUtils;
import io.nats.client.support.IncomingHeadersProcessor;
import io.nats.client.support.JsonUtils;
import io.nats.client.support.JsonValue;

import java.time.ZonedDateTime;

import static io.nats.client.support.ApiConstants.*;
import static io.nats.client.support.HeadersUtils.addHeadersAsField;
import static io.nats.client.support.JsonUtils.addRawJson;
import static io.nats.client.support.JsonValueUtils.*;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.NatsJetStreamConstants.*;

/**
Expand Down Expand Up @@ -75,7 +75,7 @@ public MessageInfo(Message msg, String streamName, boolean direct) {
lastSeq = -1;
}
else {
lastSeq = safeParseLong(temp, -1);
lastSeq = JsonUtils.safeParseLong(temp, -1);
}
// these are control headers, not real headers so don't give them to the user.
headers = new Headers(msgHeaders, true, MESSAGE_INFO_HEADERS);
Expand Down Expand Up @@ -160,22 +160,22 @@ public long getLastSeq() {

@Override
public String toString() {
StringBuilder sb = beginJsonPrefixed("\"MessageInfo\":");
addField(sb, "direct", direct);
addField(sb, "error", getError());
addField(sb, SUBJECT, subject);
addField(sb, SEQ, seq);
StringBuilder sb = JsonUtils.beginJsonPrefixed("\"MessageInfo\":");
JsonUtils.addField(sb, "direct", direct);
JsonUtils.addField(sb, "error", getError());
JsonUtils.addField(sb, SUBJECT, subject);
JsonUtils.addField(sb, SEQ, seq);
if (data == null) {
addRawJson(sb, DATA, "null");
}
else {
addField(sb, "data_length", data.length);
JsonUtils.addField(sb, "data_length", data.length);
}
addField(sb, TIME, time);
addField(sb, STREAM, stream);
addField(sb, "last_seq", lastSeq);
addField(sb, SUBJECT, subject);
addHeadersAsField(sb, HDRS, headers);
return endJson(sb).toString();
JsonUtils.addField(sb, TIME, time);
JsonUtils.addField(sb, STREAM, stream);
JsonUtils.addField(sb, "last_seq", lastSeq);
JsonUtils.addField(sb, SUBJECT, subject);
JsonUtils.addField(sb, HDRS, headers);
return JsonUtils.endJson(sb).toString();
}
}
15 changes: 8 additions & 7 deletions src/main/java/io/nats/client/api/ObjectInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
import java.time.ZonedDateTime;

import static io.nats.client.support.ApiConstants.*;
import static io.nats.client.support.JsonWriteUtils.*;
import static io.nats.client.support.JsonUtils.beginJson;
import static io.nats.client.support.JsonUtils.endJson;

/**
* The ObjectInfo is Object Meta Information plus instance information
Expand Down Expand Up @@ -71,12 +72,12 @@ public String toJson() {
// never write MTIME (modified)
StringBuilder sb = beginJson();
objectMeta.embedJson(sb); // the go code embeds the objectMeta's fields instead of as a child object.
addField(sb, BUCKET, bucket);
addField(sb, NUID, nuid);
addField(sb, SIZE, size);
addField(sb, CHUNKS, chunks);
addField(sb, DIGEST, digest);
addField(sb, DELETED, deleted);
JsonUtils.addField(sb, BUCKET, bucket);
JsonUtils.addField(sb, NUID, nuid);
JsonUtils.addField(sb, SIZE, size);
JsonUtils.addField(sb, CHUNKS, chunks);
JsonUtils.addField(sb, DIGEST, digest);
JsonUtils.addField(sb, DELETED, deleted);
return endJson(sb).toString();
}

Expand Down
8 changes: 5 additions & 3 deletions src/main/java/io/nats/client/api/ObjectLink.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,15 @@
package io.nats.client.api;

import io.nats.client.support.JsonSerializable;
import io.nats.client.support.JsonUtils;
import io.nats.client.support.JsonValue;
import io.nats.client.support.Validator;

import static io.nats.client.support.ApiConstants.BUCKET;
import static io.nats.client.support.ApiConstants.NAME;
import static io.nats.client.support.JsonUtils.beginJson;
import static io.nats.client.support.JsonUtils.endJson;
import static io.nats.client.support.JsonValueUtils.readString;
import static io.nats.client.support.JsonWriteUtils.*;

/**
* The ObjectLink is used to embed links to other objects.
Expand All @@ -46,8 +48,8 @@ private ObjectLink(String bucket, String objectName) {
@Override
public String toJson() {
StringBuilder sb = beginJson();
addField(sb, BUCKET, bucket);
addField(sb, NAME, objectName);
JsonUtils.addField(sb, BUCKET, bucket);
JsonUtils.addField(sb, NAME, objectName);
return endJson(sb).toString();
}

Expand Down
Loading

0 comments on commit 4c67c1a

Please sign in to comment.