This is an automated email from the ASF dual-hosted git repository.
xiazcy pushed a commit to branch 3.8-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/3.8-dev by this push:
new 57ed0467ac CTR backport refactored typeOf() implementation for P &
CompareType from TP 4.0
57ed0467ac is described below
commit 57ed0467ace20691e9dae9baf69bdd8001d20459
Author: xiazcy <[email protected]>
AuthorDate: Fri Oct 24 16:02:34 2025 -0700
CTR backport refactored typeOf() implementation for P & CompareType from TP
4.0
---
.../gremlin/process/traversal/CompareType.java | 19 +++++++++----------
.../apache/tinkerpop/gremlin/process/traversal/P.java | 2 +-
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CompareType.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CompareType.java
index c3854d2de2..45bafc5483 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CompareType.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CompareType.java
@@ -36,22 +36,21 @@ public enum CompareType implements PBiPredicate<Object,
Object> {
typeOf {
@Override
public boolean test(final Object first, final Object second) {
- Class<?> valueClass;
if (first == null) {
- return second == null;
+ return second == null || (second instanceof GType && ((GType)
second).getType() == null);
}
+
+ Class<?> valueClass;
if (second instanceof String) {
- // need to assess the string token at run time on server
- final Optional<Class<?>> opt =
CompareType.GlobalTypeCache.getRegisteredType((String) second);
- if (opt.isEmpty()) {
- throw new IllegalArgumentException(second + " is not a
registered type");
- }
- else
- valueClass = opt.get();
+ valueClass =
CompareType.GlobalTypeCache.getRegisteredType((String) second)
+ .orElseThrow(() -> new IllegalArgumentException(second
+ " is not a registered type"));
+ } else if (second instanceof GType) {
+ valueClass = ((GType) second).getType();
} else {
valueClass = (Class<?>) second;
}
- return second != null &&
valueClass.isAssignableFrom(first.getClass());
+
+ return valueClass != null &&
valueClass.isAssignableFrom(first.getClass());
}
};
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
index cea7a9258f..559682a56e 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
@@ -444,7 +444,7 @@ public class P<V> implements Predicate<V>, Serializable,
Cloneable {
* @since 3.8.0
*/
public static <V> P<V> typeOf(final GType value) {
- return new P(CompareType.typeOf, value.getType());
+ return new P(CompareType.typeOf, value);
}
/**