diff --git a/src/main/java/com/twilio/Twilio.java b/src/main/java/com/twilio/Twilio.java
index 0b1df61c94..dd1db6fe72 100644
--- a/src/main/java/com/twilio/Twilio.java
+++ b/src/main/java/com/twilio/Twilio.java
@@ -11,7 +11,6 @@
import com.twilio.http.Request;
import com.twilio.http.Response;
import com.twilio.http.TwilioRestClient;
-import com.twilio.type.RegionEndpoints;
import java.util.Map;
import lombok.Getter;
@@ -24,7 +23,21 @@
import org.slf4j.LoggerFactory;
/**
- * Singleton class to initialize Twilio environment.
+ * The {@code Twilio} class is a thread-safe singleton that manages the global configuration and initialization
+ * of the Twilio Java SDK environment. It provides static methods to set credentials, region, edge, and other
+ * runtime options, as well as to initialize and retrieve the shared {@link TwilioRestClient} instance.
+ *
+ * Usage of this class is required before making API requests. Credentials can be set via environment variables,
+ * system properties, or explicitly using the {@code init} methods. The class also manages a shared
+ * {@link ExecutorService} for asynchronous operations and provides utility methods for SSL certificate validation.
+ *
+ * Example usage:
+ *
+ * Twilio.init("ACCOUNT_SID", "AUTH_TOKEN");
+ * // or with a CredentialProvider
+ * Twilio.init(new MyCredentialProvider());
+ *
+ *
*/
public class Twilio {
@@ -44,7 +57,6 @@ public class Twilio {
private static CredentialProvider credentialProvider;
- private static Map regionMap = RegionEndpoints.getRegions();
private static final Logger logger = LoggerFactory.getLogger(Twilio.class);
@@ -52,7 +64,7 @@ public class Twilio {
private Twilio() {
}
- /*
+ /**
* Ensures that the ExecutorService is shutdown when the JVM exits.
*/
static {
@@ -243,12 +255,6 @@ private static TwilioRestClient buildRestClient() {
if (userAgentExtensions != null) {
builder.userAgentExtensions(Twilio.userAgentExtensions);
}
- if (Twilio.edge == null && Twilio.region != null) {
- logger.warn(
- "Setting default `Edge` for the provided `region`. For regional processing, DNS is of format product...twilio.com; otherwise use product.twilio.com."
- );
- Twilio.edge = regionMap.get(Twilio.region);
- }
builder.region(Twilio.region);
builder.edge(Twilio.edge);
diff --git a/src/main/java/com/twilio/http/TwilioRestClient.java b/src/main/java/com/twilio/http/TwilioRestClient.java
index 0d708cf8e8..2dafce8fad 100644
--- a/src/main/java/com/twilio/http/TwilioRestClient.java
+++ b/src/main/java/com/twilio/http/TwilioRestClient.java
@@ -2,11 +2,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.twilio.Twilio;
import com.twilio.auth_strategy.AuthStrategy;
import com.twilio.auth_strategy.NoAuthStrategy;
import com.twilio.constant.EnumConstants;
-import com.twilio.type.RegionEndpoints;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -72,7 +70,6 @@ public class TwilioRestClient {
@Getter
private final List userAgentExtensions;
private static final Logger logger = LoggerFactory.getLogger(TwilioRestClient.class);
- private static Map regionMap = RegionEndpoints.getRegions();
protected TwilioRestClient(Builder b) {
this.username = b.username;
@@ -80,14 +77,7 @@ protected TwilioRestClient(Builder b) {
this.authStrategy = b.authStrategy;
this.accountSid = b.accountSid;
this.region = b.region;
- if(b.edge == null && b.region != null) {
- logger.warn(
- "Setting default `Edge` for the provided `region`. For regional processing, DNS is of format product...twilio.com; otherwise use product.twilio.com."
- );
- this.edge = regionMap.get(this.region);
- }
- else
- this.edge = b.edge;
+ this.edge = b.edge;
this.httpClient = b.httpClient;
this.objectMapper = b.objectMapper;
this.userAgentExtensions = b.userAgentExtensions;
diff --git a/src/main/java/com/twilio/type/RegionEndpoints.java b/src/main/java/com/twilio/type/RegionEndpoints.java
deleted file mode 100644
index 0edda18a13..0000000000
--- a/src/main/java/com/twilio/type/RegionEndpoints.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.twilio.type;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Provides region-to-edge mappings for Twilio's regional processing.
- *
- * This class is part of the transition away from direct edge configuration,
- * allowing clients to use region identifiers that are mapped to the appropriate edge endpoints.
- * It is intended to centralize and simplify region-to-edge lookups for Twilio services.
- */
-public class RegionEndpoints {
- private static Map regionMap = new HashMap<>();
- static {
- regionMap.put("au1", "sydney");
- regionMap.put("br1", "sao-paulo");
- regionMap.put("ie1", "dublin");
- regionMap.put("de1", "frankfurt");
- regionMap.put("jp1", "tokyo");
- regionMap.put("jp2", "osaka");
- regionMap.put("sg1", "singapore");
- regionMap.put("us1", "ashburn");
- regionMap.put("us2", "umatilla");
- }
- public static Map getRegions() {
- return Collections.unmodifiableMap(regionMap);
- }
-}
diff --git a/src/test/java/com/twilio/TwilioTest.java b/src/test/java/com/twilio/TwilioTest.java
index e52c08e643..7c3451f5ed 100644
--- a/src/test/java/com/twilio/TwilioTest.java
+++ b/src/test/java/com/twilio/TwilioTest.java
@@ -9,10 +9,8 @@
import com.twilio.http.Response;
import com.twilio.http.TwilioRestClient;
-import com.twilio.type.RegionEndpoints;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
@@ -162,27 +160,4 @@ public void testValidateSslCertificateSuccess() {
Twilio.validateSslCertificate(networkHttpClient);
}
- @Test
- public void testEdge() {
- Twilio.setUsername("testUser");
- Twilio.setPassword("testToken");
- Twilio.setRegion("br1");
- Twilio.setEdge("someEdge");
- TwilioRestClient client = Twilio.getRestClient();
- assertEquals("someEdge", client.getEdge());
- Twilio.setEdge(null);
- Twilio.setRegion(null);
- }
-
- @Test
- public void testEdgeIsSetFromRegionMap() {
- Map regionMap = RegionEndpoints.getRegions();
- Twilio.setUsername("testUser");
- Twilio.setPassword("testToken");
- Twilio.setRegion("br1");
- TwilioRestClient client = Twilio.getRestClient();
- assertEquals(regionMap.get("br1"), client.getEdge());
- Twilio.setRegion(null);
- }
-
}
diff --git a/src/test/java/com/twilio/http/TwilioRestClientTest.java b/src/test/java/com/twilio/http/TwilioRestClientTest.java
index f7c53ea5c5..9c4a758160 100644
--- a/src/test/java/com/twilio/http/TwilioRestClientTest.java
+++ b/src/test/java/com/twilio/http/TwilioRestClientTest.java
@@ -8,14 +8,11 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.twilio.Twilio;
import com.twilio.auth_strategy.BasicAuthStrategy;
import com.twilio.auth_strategy.NoAuthStrategy;
import com.twilio.rest.Domains;
-import com.twilio.type.RegionEndpoints;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
@@ -165,19 +162,4 @@ public void testRequestWithNoAuthStrategyWithAuthStrategy() {
// AuthStrategy of Request not changing by TwilioRestClient
assertEquals(NoAuthStrategy.getInstance(), request.getAuthStrategy());
}
-
- @Test
- public void testEdgeIsSetFromRegionMap() {
- Map regionMap = RegionEndpoints.getRegions();
- for( String key: regionMap.keySet() ) {
- TwilioRestClient client = new TwilioRestClient.Builder(USER_NAME, TOKEN).region(key).build();
- assertEquals(regionMap.get(key), client.getEdge());
- }
- }
-
- @Test
- public void testEdge() {
- TwilioRestClient client = new TwilioRestClient.Builder(USER_NAME, TOKEN).region("us1").edge("someEdge").build();
- assertEquals("someEdge", client.getEdge());
- }
}