From 94fdda31dc3a0ba7f3e14eb9ad30e0d52561df8e Mon Sep 17 00:00:00 2001 From: Valentyn Kahamlyk Date: Tue, 21 May 2024 08:48:15 -0700 Subject: [PATCH] added simpler form of sigv4() --- .../console/jsr223/RemoteGremlinPlugin.java | 14 +++++++++++--- .../apache/tinkerpop/gremlin/driver/auth/Auth.java | 4 ++++ .../tinkerpop/gremlin/driver/auth/Sigv4.java | 6 ++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/jsr223/RemoteGremlinPlugin.java b/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/jsr223/RemoteGremlinPlugin.java index bbf61c9f84..8bc0d94abc 100644 --- a/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/jsr223/RemoteGremlinPlugin.java +++ b/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/jsr223/RemoteGremlinPlugin.java @@ -20,14 +20,17 @@ import org.apache.tinkerpop.gremlin.driver.Client; import org.apache.tinkerpop.gremlin.driver.Cluster; +import org.apache.tinkerpop.gremlin.driver.auth.Auth; import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection; import org.apache.tinkerpop.gremlin.jsr223.AbstractGremlinPlugin; import org.apache.tinkerpop.gremlin.jsr223.DefaultImportCustomizer; import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer; +import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -38,12 +41,17 @@ public class RemoteGremlinPlugin extends AbstractGremlinPlugin { private static final ImportCustomizer imports = DefaultImportCustomizer.build() .addClassImports(Cluster.class, Client.class, - DriverRemoteConnection.class) - .addMethodImports( - Stream.of(ConnectionHelper.class.getMethods()).filter(m -> Modifier.isStatic(m.getModifiers())).collect(Collectors.toList())) + DriverRemoteConnection.class, + Auth.class) + .addMethodImports(allStaticMethods(ConnectionHelper.class)) + .addMethodImports(allStaticMethods(Auth.class)) .create(); public RemoteGremlinPlugin() { super(NAME, new HashSet<>(Collections.singletonList("gremlin-groovy")), imports); } + + private static List allStaticMethods(final Class clazz) { + return Stream.of(clazz.getMethods()).filter(m -> Modifier.isStatic(m.getModifiers())).collect(Collectors.toList()); + } } diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/auth/Auth.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/auth/Auth.java index 8437cf7609..5bc39254bd 100644 --- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/auth/Auth.java +++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/auth/Auth.java @@ -26,6 +26,10 @@ static Auth basic(final String username, final String password) { return new Basic(username, password); } + static Auth sigv4(final String regionName) { + return new Sigv4(regionName); + } + static Auth sigv4(final String regionName, final AWSCredentialsProvider awsCredentialsProvider) { return new Sigv4(regionName, awsCredentialsProvider); } diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/auth/Sigv4.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/auth/Sigv4.java index 8e2665dc9c..55f1bbd723 100644 --- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/auth/Sigv4.java +++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/auth/Sigv4.java @@ -24,6 +24,7 @@ import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.BasicSessionCredentials; +import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; import com.amazonaws.http.HttpMethodName; import com.amazonaws.util.SdkHttpUtils; import com.amazonaws.util.StringUtils; @@ -53,6 +54,11 @@ public class Sigv4 implements Auth { private final AWSCredentialsProvider awsCredentialsProvider; private final AWS4Signer aws4Signer; + + public Sigv4(final String regionName) { + this(regionName, new DefaultAWSCredentialsProviderChain(), NEPTUNE_SERVICE_NAME); + } + public Sigv4(final String regionName, final AWSCredentialsProvider awsCredentialsProvider) { this(regionName, awsCredentialsProvider, NEPTUNE_SERVICE_NAME); }