From a9c8f8bb364c3fd1f82cf21e8b085f29c4cc24a0 Mon Sep 17 00:00:00 2001 From: Christopher Grote Date: Sat, 13 Aug 2022 01:08:12 +0100 Subject: [PATCH] Cleanups in linking to Atlan Signed-off-by: Christopher Grote --- src/main/java/com/atlan/Atlan.java | 17 ++++++++++++++--- .../java/com/atlan/api/EntityBulkEndpoint.java | 4 ++-- .../java/com/atlan/api/EntityGuidEndpoint.java | 2 +- .../api/EntityUniqueAttributesEndpoint.java | 2 +- .../java/com/atlan/api/IndexSearchEndpoint.java | 2 +- src/main/java/com/atlan/api/RolesEndpoint.java | 6 +++--- .../java/com/atlan/api/TypeDefsEndpoint.java | 2 +- .../java/com/atlan/api/WorkflowsEndpoint.java | 6 +++--- .../com/atlan/model/relations/Reference.java | 16 +++++++++++++++- src/main/java/com/atlan/net/AtlanRequest.java | 2 +- .../com/atlan/net/HttpURLConnectionClient.java | 4 ++-- src/main/java/com/atlan/net/RequestOptions.java | 4 ++-- .../com/atlan/functional/AtlanLiveTest.java | 4 ++-- 13 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/atlan/Atlan.java b/src/main/java/com/atlan/Atlan.java index 0a626fbfc1..acea95d77e 100644 --- a/src/main/java/com/atlan/Atlan.java +++ b/src/main/java/com/atlan/Atlan.java @@ -13,7 +13,6 @@ public abstract class Atlan { public static final String API_VERSION = ApiVersion.CURRENT; public static final String VERSION = "0.0.1"; - public static volatile String apiKey; public static volatile String clientId; public static volatile boolean enableTelemetry = true; public static volatile String partnerId; @@ -26,6 +25,7 @@ public abstract class Atlan { private static volatile int maxNetworkRetries = 0; + private static volatile String apiToken = null; private static volatile String apiBase = null; private static volatile Proxy connectionProxy = null; private static volatile PasswordAuthentication proxyCredential = null; @@ -33,14 +33,25 @@ public abstract class Atlan { private static volatile Map appInfo = null; /** Set the base URL for your tenant of Atlan. */ - public static void setApiBase(final String baseURL) { + public static void setBaseUrl(final String baseURL) { apiBase = baseURL; } - public static String getApiBase() { + /** Retrieve the base URL for your tenant of Atlan. */ + public static String getBaseUrl() { return apiBase; } + /** Set the API token to use for authenticating API calls. */ + public static void setApiToken(final String token) { + apiToken = token; + } + + /** Retrieve the API token to use for authenticating API calls. */ + public static String getApiToken() { + return apiToken; + } + /** * Set proxy to tunnel all Atlan connections. * diff --git a/src/main/java/com/atlan/api/EntityBulkEndpoint.java b/src/main/java/com/atlan/api/EntityBulkEndpoint.java index bb5b5316e5..6dfd3c0c15 100644 --- a/src/main/java/com/atlan/api/EntityBulkEndpoint.java +++ b/src/main/java/com/atlan/api/EntityBulkEndpoint.java @@ -33,7 +33,7 @@ public static EntityMutationResponse upsert( throws AtlanException { String url = String.format( "%s%s", - Atlan.getApiBase(), + Atlan.getBaseUrl(), String.format( "%s?replaceClassifications=%s&replaceBusinessAttributes=%s", endpoint, replaceClassifications, replaceBusinessAttributes)); @@ -60,7 +60,7 @@ public static EntityMutationResponse delete(List guids, AtlanDeleteType guidList.setLength(guidList.length() - 1); String url = String.format( "%s%s", - Atlan.getApiBase(), String.format("%s?%s&deleteType=%s", endpoint, guidList, deleteType)); + Atlan.getBaseUrl(), String.format("%s?%s&deleteType=%s", endpoint, guidList, deleteType)); return ApiResource.request( ApiResource.RequestMethod.DELETE, url, "", EntityMutationResponse.class, null); } diff --git a/src/main/java/com/atlan/api/EntityGuidEndpoint.java b/src/main/java/com/atlan/api/EntityGuidEndpoint.java index 18c92e4d9b..1d2b912311 100644 --- a/src/main/java/com/atlan/api/EntityGuidEndpoint.java +++ b/src/main/java/com/atlan/api/EntityGuidEndpoint.java @@ -14,7 +14,7 @@ public static EntityResponse retrieve(String guid, boolean ignoreRelationships, throws AtlanException { String url = String.format( "%s%s", - Atlan.getApiBase(), + Atlan.getBaseUrl(), String.format( "%s%s?ignoreRelationships=%s&minExtInfo=%s", endpoint, ApiResource.urlEncodeId(guid), ignoreRelationships, minExtInfo)); diff --git a/src/main/java/com/atlan/api/EntityUniqueAttributesEndpoint.java b/src/main/java/com/atlan/api/EntityUniqueAttributesEndpoint.java index 3d9a5efc5c..7ccb8a1368 100644 --- a/src/main/java/com/atlan/api/EntityUniqueAttributesEndpoint.java +++ b/src/main/java/com/atlan/api/EntityUniqueAttributesEndpoint.java @@ -15,7 +15,7 @@ public static EntityResponse retrieve( throws AtlanException { String url = String.format( "%s%s", - Atlan.getApiBase(), + Atlan.getBaseUrl(), String.format( "%s%s?attr:qualifiedName=%s&ignoreRelationships=%s&minExtInfo=%s", endpoint, diff --git a/src/main/java/com/atlan/api/IndexSearchEndpoint.java b/src/main/java/com/atlan/api/IndexSearchEndpoint.java index 68901e962e..db6eadb2cf 100644 --- a/src/main/java/com/atlan/api/IndexSearchEndpoint.java +++ b/src/main/java/com/atlan/api/IndexSearchEndpoint.java @@ -11,7 +11,7 @@ public class IndexSearchEndpoint { private static final String endpoint = "/api/meta/search/indexsearch"; public static IndexSearchResponse search(IndexSearchRequest request) throws AtlanException { - String url = String.format("%s%s", Atlan.getApiBase(), endpoint); + String url = String.format("%s%s", Atlan.getBaseUrl(), endpoint); return ApiResource.request(ApiResource.RequestMethod.POST, url, request, IndexSearchResponse.class, null); } } diff --git a/src/main/java/com/atlan/api/RolesEndpoint.java b/src/main/java/com/atlan/api/RolesEndpoint.java index 58052fb283..eb0419f2df 100644 --- a/src/main/java/com/atlan/api/RolesEndpoint.java +++ b/src/main/java/com/atlan/api/RolesEndpoint.java @@ -31,7 +31,7 @@ public static RoleResponse getRoles(String filter, String sort, boolean count, i } String url = String.format( "%s%s?filter=%s&sort=%s&count=%s&offset=%s&limit=%s", - Atlan.getApiBase(), + Atlan.getBaseUrl(), endpoint, ApiResource.urlEncode(filter), ApiResource.urlEncode(sort), @@ -51,7 +51,7 @@ public static RoleResponse getRoles(String filter) throws AtlanException { if (filter == null) { filter = ""; } - String url = String.format("%s%s?filter=%s", Atlan.getApiBase(), endpoint, ApiResource.urlEncode(filter)); + String url = String.format("%s%s?filter=%s", Atlan.getBaseUrl(), endpoint, ApiResource.urlEncode(filter)); return ApiResource.request(ApiResource.RequestMethod.GET, url, "", RoleResponse.class, null); } @@ -61,7 +61,7 @@ public static RoleResponse getRoles(String filter) throws AtlanException { * @throws AtlanException on any API communication issue */ public static RoleResponse getAllRoles() throws AtlanException { - String url = String.format("%s%s", Atlan.getApiBase(), endpoint); + String url = String.format("%s%s", Atlan.getBaseUrl(), endpoint); return ApiResource.request(ApiResource.RequestMethod.GET, url, "", RoleResponse.class, null); } } diff --git a/src/main/java/com/atlan/api/TypeDefsEndpoint.java b/src/main/java/com/atlan/api/TypeDefsEndpoint.java index 733af7e3f3..e367c6d7f8 100644 --- a/src/main/java/com/atlan/api/TypeDefsEndpoint.java +++ b/src/main/java/com/atlan/api/TypeDefsEndpoint.java @@ -14,7 +14,7 @@ public class TypeDefsEndpoint { * @param category of type definitions to retrieve */ public static TypeDefResponse getTypeDefs(String category) throws AtlanException { - String url = String.format("%s%s", Atlan.getApiBase(), String.format("%s?type=%s", endpoint, category)); + String url = String.format("%s%s", Atlan.getBaseUrl(), String.format("%s?type=%s", endpoint, category)); return ApiResource.request(ApiResource.RequestMethod.GET, url, "", TypeDefResponse.class, null); } } diff --git a/src/main/java/com/atlan/api/WorkflowsEndpoint.java b/src/main/java/com/atlan/api/WorkflowsEndpoint.java index 9c72e8562d..8878b4b1cc 100644 --- a/src/main/java/com/atlan/api/WorkflowsEndpoint.java +++ b/src/main/java/com/atlan/api/WorkflowsEndpoint.java @@ -21,7 +21,7 @@ public class WorkflowsEndpoint { * @throws AtlanException on any API communication issue */ public static WorkflowResponse run(Workflow workflow) throws AtlanException { - String url = String.format("%s%s", Atlan.getApiBase(), String.format("%s?submit=true", workflows_endpoint)); + String url = String.format("%s%s", Atlan.getBaseUrl(), String.format("%s?submit=true", workflows_endpoint)); return ApiResource.request(ApiResource.RequestMethod.POST, url, workflow, WorkflowResponse.class, null); } @@ -32,7 +32,7 @@ public static WorkflowResponse run(Workflow workflow) throws AtlanException { */ public static void archive(String workflowName) throws AtlanException { String url = String.format( - "%s%s", Atlan.getApiBase(), String.format("%s/%s/archive", workflows_endpoint, workflowName)); + "%s%s", Atlan.getBaseUrl(), String.format("%s/%s/archive", workflows_endpoint, workflowName)); ApiResource.request(ApiResource.RequestMethod.POST, url, "", ApiResource.class, null); } @@ -43,7 +43,7 @@ public static void archive(String workflowName) throws AtlanException { * @throws AtlanException on any API communication issue */ public static WorkflowSearchResponse search(WorkflowSearchRequest request) throws AtlanException { - String url = String.format("%s%s", Atlan.getApiBase(), search_endpoint); + String url = String.format("%s%s", Atlan.getBaseUrl(), search_endpoint); return ApiResource.request(ApiResource.RequestMethod.POST, url, request, WorkflowSearchResponse.class, null); } } diff --git a/src/main/java/com/atlan/model/relations/Reference.java b/src/main/java/com/atlan/model/relations/Reference.java index 1af7d12bc7..afa6eb3f93 100644 --- a/src/main/java/com/atlan/model/relations/Reference.java +++ b/src/main/java/com/atlan/model/relations/Reference.java @@ -13,7 +13,7 @@ public class Reference extends AtlanObject { /** - * Quickly create a new reference to another asset. + * Quickly create a new reference to another asset, by its GUID. * @param typeName type of the asset to reference * @param guid GUID of the asset to reference * @return a reference to another asset @@ -22,6 +22,20 @@ public static Reference to(String typeName, String guid) { return Reference.builder().typeName(typeName).guid(guid).build(); } + /** + * Quickly create a new reference to another asset, by its qualifiedName. + * @param typeName type of the asset to reference + * @param qualifiedName of the asset to reference + * @return a reference to another asset + */ + public static Reference by(String typeName, String qualifiedName) { + return Reference.builder() + .typeName(typeName) + .uniqueAttributes( + UniqueAttributes.builder().qualifiedName(qualifiedName).build()) + .build(); + } + /** * Unique identifier of the related entity. If the uniqueAttributes are not provided, this must be * provided. diff --git a/src/main/java/com/atlan/net/AtlanRequest.java b/src/main/java/com/atlan/net/AtlanRequest.java index e94eec08c0..7dce8d9de6 100644 --- a/src/main/java/com/atlan/net/AtlanRequest.java +++ b/src/main/java/com/atlan/net/AtlanRequest.java @@ -75,7 +75,7 @@ public AtlanRequest(ApiResource.RequestMethod method, String url, String body, R + "Please check your internet connection and try again. If this problem persists," + "you should check Atlan's availability via a browser," + " or let us know at support@atlan.com.", - Atlan.getApiBase(), e.getMessage()), + Atlan.getBaseUrl(), e.getMessage()), e); } } diff --git a/src/main/java/com/atlan/net/HttpURLConnectionClient.java b/src/main/java/com/atlan/net/HttpURLConnectionClient.java index a8283306b3..238f2d3b8d 100644 --- a/src/main/java/com/atlan/net/HttpURLConnectionClient.java +++ b/src/main/java/com/atlan/net/HttpURLConnectionClient.java @@ -50,7 +50,7 @@ public AtlanResponseStream requestStream(AtlanRequest request) throws ApiConnect + "Please check your internet connection and try again. If this problem persists," + "you should check Atlan's availability via a browser," + " or let us know at support@atlan.com.", - Atlan.getApiBase(), e.getMessage()), + Atlan.getBaseUrl(), e.getMessage()), e); } } @@ -74,7 +74,7 @@ public AtlanResponse request(AtlanRequest request) throws ApiConnectionException + "Please check your internet connection and try again. If this problem persists," + "you should check Atlan's availability via a browser," + " or let us know at support@atlan.com.", - Atlan.getApiBase(), e.getMessage()), + Atlan.getBaseUrl(), e.getMessage()), e); } } diff --git a/src/main/java/com/atlan/net/RequestOptions.java b/src/main/java/com/atlan/net/RequestOptions.java index 563082e3c2..b502621981 100644 --- a/src/main/java/com/atlan/net/RequestOptions.java +++ b/src/main/java/com/atlan/net/RequestOptions.java @@ -30,7 +30,7 @@ public class RequestOptions { public static RequestOptions getDefault() { return new RequestOptions( - Atlan.apiKey, + Atlan.getApiToken(), Atlan.clientId, null, null, @@ -139,7 +139,7 @@ public static final class RequestOptionsBuilder { * default values. */ public RequestOptionsBuilder() { - this.apiKey = Atlan.apiKey; + this.apiKey = Atlan.getApiToken(); this.clientId = Atlan.clientId; this.connectTimeout = Atlan.getConnectTimeout(); this.readTimeout = Atlan.getReadTimeout(); diff --git a/src/test/java/com/atlan/functional/AtlanLiveTest.java b/src/test/java/com/atlan/functional/AtlanLiveTest.java index 2b01590c80..a386d38288 100644 --- a/src/test/java/com/atlan/functional/AtlanLiveTest.java +++ b/src/test/java/com/atlan/functional/AtlanLiveTest.java @@ -8,7 +8,7 @@ public class AtlanLiveTest { public static final String ANNOUNCEMENT_MESSAGE = "Automated testing of the Java client."; static { - Atlan.apiKey = System.getenv("ATLAN_API_KEY"); - Atlan.setApiBase(System.getenv("ATLAN_BASE_URL")); + Atlan.setApiToken(System.getenv("ATLAN_API_KEY")); + Atlan.setBaseUrl(System.getenv("ATLAN_BASE_URL")); } }