Skip to content

Commit 467518c

Browse files
committed
added SOS
1 parent 1193a57 commit 467518c

File tree

10 files changed

+58
-705
lines changed

10 files changed

+58
-705
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# zexi 0.4.0
2+
neptune_Hello:
3+
languages:
4+
Java:
5+
versions:
6+
- sdk_version: 2
7+
github: javav2/example_code/neptune
8+
sdkguide:
9+
excerpts:
10+
- description:
11+
snippet_tags:
12+
- neptune.java2.hello.main
13+
services:
14+
neptune: {DescribeDBClustersPaginator}
Lines changed: 40 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,60 @@
1-
package com.example.neptune;
1+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
23

3-
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
4-
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
5-
import software.amazon.awssdk.http.apache.ApacheHttpClient;
6-
import software.amazon.awssdk.regions.Region;
7-
import software.amazon.awssdk.services.neptunedata.NeptunedataClient;
8-
import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinExplainQueryRequest;
9-
import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinExplainQueryResponse;
10-
import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinProfileQueryRequest;
11-
import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinProfileQueryResponse;
12-
import software.amazon.awssdk.services.neptunedata.model.NeptunedataException;
4+
package com.example.neptune;
135

14-
import java.net.URI;
15-
import java.time.Duration;
6+
import software.amazon.awssdk.core.async.SdkPublisher;
7+
import software.amazon.awssdk.services.neptune.NeptuneAsyncClient;
8+
import software.amazon.awssdk.services.neptune.model.DescribeDbClustersRequest;
9+
import software.amazon.awssdk.services.neptune.model.DescribeDbClustersResponse;
10+
import java.util.concurrent.CompletableFuture;
11+
import java.util.concurrent.ExecutionException;
1612

13+
// snippet-start:[neptune.java2.hello.main]
1714
/**
18-
* This example demonstrates how to run a Gremlin Explain and Profile query on an Amazon Neptune database
19-
* using the AWS SDK for Java V2.
20-
*
21-
* VPC NETWORKING REQUIREMENT:
22-
* ----------------------------------------------------------------------
23-
* Amazon Neptune is designed to be **accessed from within an Amazon VPC**.
24-
* It does not expose a public endpoint. This means:
25-
*
26-
* 1. Your Java application must run **within the same VPC** (e.g., via an EC2 instance, Lambda function, ECS task,
27-
* or AWS Cloud9 environment), or from a peered VPC that has network access to Neptune.
28-
*
29-
* 2. You cannot run this example directly from your local machine (e.g., via IntelliJ or PyCharm on your laptop)
30-
* unless you set up a VPN or AWS Direct Connect that bridges your local environment to your VPC.
31-
*
32-
* 3. You must ensure the **VPC Security Group** attached to your Neptune cluster allows **inbound access on port 8182**
33-
* from the instance or environment where this Java code runs.
15+
* Before running this Java V2 code example, set up your development
16+
* environment, including your credentials.
3417
*
35-
* 4. The `endpointOverride()` must use the **HTTPS Neptune endpoint** including the `:8182` port.
18+
* For more information, see the following documentation topic:
3619
*
37-
* TIP:
38-
* You can test connectivity using `curl` or `telnet` from your instance to:
39-
* curl https://<neptune-endpoint>:8182/status
40-
* If this fails, it’s likely a networking or security group issue.
41-
*
42-
* ----------------------------------------------------------------------
20+
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
4321
*/
4422
public class HelloNeptune {
4523

4624
private static final String NEPTUNE_ENDPOINT = "https://[Specify-Your-Endpoint]:8182";
4725

4826
public static void main(String[] args) {
49-
50-
NeptunedataClient client = NeptunedataClient.builder()
51-
.credentialsProvider(DefaultCredentialsProvider.create())
52-
.region(Region.US_EAST_1)
53-
.endpointOverride(URI.create(NEPTUNE_ENDPOINT))
54-
.httpClientBuilder(ApacheHttpClient.builder()
55-
.connectionTimeout(Duration.ofSeconds(10))
56-
.socketTimeout(Duration.ofSeconds(30)))
57-
.overrideConfiguration(ClientOverrideConfiguration.builder()
58-
.apiCallAttemptTimeout(Duration.ofSeconds(30))
59-
.build())
60-
.build();
61-
62-
try {
63-
runExplainQuery(client);
64-
runProfileQuery(client);
65-
} catch (NeptunedataException e) {
66-
System.err.println("Neptune error: " + e.awsErrorDetails().errorMessage());
67-
} catch (Exception e) {
68-
System.err.println("Unexpected error: " + e.getMessage());
69-
} finally {
70-
client.close();
71-
}
27+
NeptuneAsyncClient neptuneClient = NeptuneAsyncClient.create();
28+
describeDbCluster(neptuneClient);
7229
}
7330

74-
private static void runExplainQuery(NeptunedataClient client) {
75-
System.out.println("Running Gremlin EXPLAIN query...");
76-
77-
ExecuteGremlinExplainQueryRequest explainRequest = ExecuteGremlinExplainQueryRequest.builder()
78-
.gremlinQuery("g.V().has('code', 'ANC')")
31+
/**
32+
* Describes the Amazon Neptune DB clusters using a paginator.
33+
*
34+
* @param neptuneClient the Amazon Neptune asynchronous client
35+
*/
36+
public static void describeDbCluster(NeptuneAsyncClient neptuneClient) {
37+
DescribeDbClustersRequest request = DescribeDbClustersRequest.builder()
38+
.maxRecords(20) // Optional: limit per page
7939
.build();
8040

81-
ExecuteGremlinExplainQueryResponse explainResponse = client.executeGremlinExplainQuery(explainRequest);
82-
83-
System.out.println("Explain Query Result:");
84-
if (explainResponse.output() != null) {
85-
System.out.println(explainResponse.output());
86-
} else {
87-
System.out.println("No explain output returned.");
88-
}
89-
}
90-
91-
private static void runProfileQuery(NeptunedataClient client) {
92-
System.out.println("Running Gremlin PROFILE query...");
41+
SdkPublisher<DescribeDbClustersResponse> paginator= neptuneClient.describeDBClustersPaginator(request);
42+
CompletableFuture<Void> future = paginator
43+
.subscribe(response -> {
44+
for (var cluster : response.dbClusters()) {
45+
System.out.println("Cluster Identifier: " + cluster.dbClusterIdentifier());
46+
System.out.println("Status: " + cluster.status());
47+
}
48+
});
9349

94-
ExecuteGremlinProfileQueryRequest profileRequest = ExecuteGremlinProfileQueryRequest.builder()
95-
.gremlinQuery("g.V().has('code', 'ANC')")
96-
.build();
97-
98-
ExecuteGremlinProfileQueryResponse profileResponse = client.executeGremlinProfileQuery(profileRequest);
99-
100-
System.out.println("Profile Query Result:");
101-
if (profileResponse.output() != null) {
102-
System.out.println(profileResponse.output());
103-
} else {
104-
System.out.println("No profile output returned.");
50+
// Wait for completion and handle errors
51+
try {
52+
future.get(); // Waits for all pages to be processed
53+
} catch (InterruptedException | ExecutionException e) {
54+
System.err.println("Failed to describe DB clusters: " + e.getMessage());
55+
} finally {
56+
neptuneClient.close();
10557
}
10658
}
10759
}
60+
// snippet-end:[neptune.java2.hello.main]

javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/CreateNeptuneGraphExample.java

Lines changed: 0 additions & 53 deletions
This file was deleted.

javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/NeptuneAnalyticsQueryExample.java

Lines changed: 0 additions & 89 deletions
This file was deleted.

javav2/example_code/neptune/src/main/java/com/example/neptune/data/GremlinProfileQueryExample.java

Lines changed: 0 additions & 81 deletions
This file was deleted.

0 commit comments

Comments
 (0)