This is an automated email from the ASF dual-hosted git repository. Cole-Greer pushed a commit to branch simplePDT in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 45fe41b2edef34421ae0780bde83331b38e06d28 Author: Cole Greer <[email protected]> AuthorDate: Thu Jun 25 08:45:42 2026 -0700 PrimitivePDT review nits: document hydrated exclusion, drop no-op transient, clarify JS PDT quoting Minor cleanups from the tinkerpop-2gy code review (no behavioral change): - PrimitiveProviderDefinedType: document why hydrated is excluded from equals/hashCode (mirroring ProviderDefinedType) and drop the no-op `transient` modifier (the type is not Serializable), aligning with the composite POJO's field declaration. - gremlin-javascript gremlin-lang: comment that PDT literals deliberately use double-quoted strings (consistent with the composite PDT form), with JSON.stringify handling escaping. Verified: gremlin-core PrimitiveProviderDefinedTypeTest 10/0/0; gremlin-javascript unit (gremlin-lang + pdt-registry) 228 passing. tinkerpop-2gy Assisted-by: Kiro:claude-opus-4.8 --- .../gremlin/structure/io/pdt/PrimitiveProviderDefinedType.java | 8 +++++++- gremlin-js/gremlin-javascript/lib/process/gremlin-lang.ts | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/pdt/PrimitiveProviderDefinedType.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/pdt/PrimitiveProviderDefinedType.java index dbf3938ac2..4315c1826c 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/pdt/PrimitiveProviderDefinedType.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/pdt/PrimitiveProviderDefinedType.java @@ -27,7 +27,7 @@ public final class PrimitiveProviderDefinedType { private final String name; private final String value; - private transient Object hydrated; + private Object hydrated; public PrimitiveProviderDefinedType(final String name, final String value) { if (name == null || name.isEmpty()) @@ -62,6 +62,12 @@ public final class PrimitiveProviderDefinedType { return hydrated; } + /** + * Equality is based solely on {@code name} and {@code value} (the serialized wire form). + * The {@code hydrated} field is intentionally excluded — it is a transient, derived view + * cached by the deserializer via {@link #withHydrated(Object)} and is not part of the + * type's logical identity. + */ @Override public boolean equals(final Object o) { if (this == o) return true; diff --git a/gremlin-js/gremlin-javascript/lib/process/gremlin-lang.ts b/gremlin-js/gremlin-javascript/lib/process/gremlin-lang.ts index fdc8bbfa9a..d204582372 100644 --- a/gremlin-js/gremlin-javascript/lib/process/gremlin-lang.ts +++ b/gremlin-js/gremlin-javascript/lib/process/gremlin-lang.ts @@ -132,6 +132,8 @@ export default class GremlinLang { return arg.name; } if (arg instanceof PrimitiveProviderDefinedType) { + // PDT literals use double-quoted strings (consistent with the composite PDT form below); + // JSON.stringify handles special-character escaping, then the outer quotes are stripped. const escapedName = JSON.stringify(arg.name).slice(1, -1); const escapedValue = JSON.stringify(arg.value).slice(1, -1); return `PDT("${escapedName}","${escapedValue}")`;
