From cd6ad009931aaf5252aeaa35eb5292b438ed1272 Mon Sep 17 00:00:00 2001 From: Eduardo San Segundo Date: Wed, 10 Jun 2026 12:27:41 +0200 Subject: [PATCH 1/4] Add NumberLookup API v2 snippet --- .../src/main/java/numberlookup/Lookup.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 examples/snippets/src/main/java/numberlookup/Lookup.java diff --git a/examples/snippets/src/main/java/numberlookup/Lookup.java b/examples/snippets/src/main/java/numberlookup/Lookup.java new file mode 100644 index 000000000..f74dfa51d --- /dev/null +++ b/examples/snippets/src/main/java/numberlookup/Lookup.java @@ -0,0 +1,56 @@ +/** + * Sinch Java Snippet + * + *

This snippet is available at https://github.com/sinch/sinch-sdk-java + * + *

See https://github.com/sinch/sinch-sdk-java/blob/main/examples/snippets/README.md for details + */ +package numberlookup; + +import com.sinch.sdk.SinchClient; +import com.sinch.sdk.domains.numberlookup.api.v2.NumberLookupV2Service; +import com.sinch.sdk.domains.numberlookup.models.v2.request.LookupFeatureType; +import com.sinch.sdk.domains.numberlookup.models.v2.request.NumberLookupRequest; +import com.sinch.sdk.domains.numberlookup.models.v2.response.NumberLookupResponse; +import com.sinch.sdk.models.Configuration; +import java.util.Collections; +import java.util.logging.Logger; +import utils.Settings; + +public class Lookup { + + private static final Logger LOGGER = Logger.getLogger(Lookup.class.getName()); + + public static void main(String[] args) { + + String projectId = Settings.getProjectId().orElse("MY_PROJECT_ID"); + String keyId = Settings.getKeyId().orElse("MY_KEY_ID"); + String keySecret = Settings.getKeySecret().orElse("MY_KEY_SECRET"); + + // The phone number you want to lookup in E.164 format + String phoneNumber = Settings.getPhoneNumber().orElse("PHONE_NUMBER"); + + Configuration configuration = + Configuration.builder() + .setProjectId(projectId) + .setKeyId(keyId) + .setKeySecret(keySecret) + .build(); + + SinchClient client = new SinchClient(configuration); + + NumberLookupV2Service numberLookupService = client.lookup().lookup(); + + NumberLookupRequest request = + NumberLookupRequest.builder() + .setNumber(phoneNumber) + .setFeatures(Collections.singletonList(LookupFeatureType.LINE_TYPE)) + .build(); + + LOGGER.info("Lookup for: " + phoneNumber); + + NumberLookupResponse response = numberLookupService.lookup(request); + + LOGGER.info("Response: " + response); + } +} From 0585a6c28f8642325e9e6d0b1fd83e1773a5d995 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Portier Date: Wed, 10 Jun 2026 14:23:09 +0200 Subject: [PATCH 2/4] feat (NumberLookup): Refactor access to number lookup service to have 'v2' accessor and facade reducing layers before calls --- .../src/main/com/sinch/sdk/SinchClient.java | 4 +- .../api/v2/NumberLookupService.java | 11 +----- .../api/v2/adapters/NumberLookupService.java | 21 ++++++----- .../adapters/NumberLookupServiceFacade.java | 37 +++++++++++++++++++ .../v2/adapters/NumberLookupServiceTest.java | 3 +- .../domains/numberlookup/v2/LookupsSteps.java | 2 +- .../src/main/java/numberlookup/Lookup.java | 2 +- 7 files changed, 55 insertions(+), 25 deletions(-) create mode 100644 client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupServiceFacade.java diff --git a/client/src/main/com/sinch/sdk/SinchClient.java b/client/src/main/com/sinch/sdk/SinchClient.java index 1612ea26a..2fe0adc7f 100644 --- a/client/src/main/com/sinch/sdk/SinchClient.java +++ b/client/src/main/com/sinch/sdk/SinchClient.java @@ -2,7 +2,7 @@ import com.sinch.sdk.core.utils.StringUtil; import com.sinch.sdk.domains.conversation.ConversationService; -import com.sinch.sdk.domains.numberlookup.api.v2.adapters.NumberLookupService; +import com.sinch.sdk.domains.numberlookup.NumberLookupService; import com.sinch.sdk.domains.numbers.NumbersService; import com.sinch.sdk.domains.sms.SMSService; import com.sinch.sdk.domains.verification.VerificationService; @@ -425,7 +425,7 @@ private ConversationService conversationInit() { } private NumberLookupService lookupInit() { - return new com.sinch.sdk.domains.numberlookup.api.v2.adapters.NumberLookupService( + return new com.sinch.sdk.domains.numberlookup.adapters.NumberLookupService( getConfiguration().getUnifiedCredentials().orElse(null), getConfiguration().getNumberLookupContext().orElse(null), getConfiguration().getOAuthServer(), diff --git a/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/NumberLookupService.java b/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/NumberLookupService.java index cfeb8b218..52e3df737 100644 --- a/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/NumberLookupService.java +++ b/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/NumberLookupService.java @@ -7,13 +7,4 @@ * href="https://developers.sinch.com/docs/number-lookup-api-v2">https://developers.sinch.com/docs/number-lookup-api-v2 * @since 2.1 */ -public interface NumberLookupService { - - /** - * Number Lookup Service instance - * - * @return service instance for project - * @since 2.1 - */ - NumberLookupV2Service lookup(); -} +public interface NumberLookupService extends NumberLookupV2Service {} diff --git a/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupService.java b/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupService.java index 6a943c298..5fdb4dcf8 100644 --- a/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupService.java +++ b/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupService.java @@ -1,12 +1,14 @@ package com.sinch.sdk.domains.numberlookup.api.v2.adapters; import com.sinch.sdk.auth.adapters.OAuthManager; +import com.sinch.sdk.core.exceptions.ApiException; import com.sinch.sdk.core.http.AuthManager; import com.sinch.sdk.core.http.HttpClient; import com.sinch.sdk.core.http.HttpMapper; import com.sinch.sdk.core.models.ServerConfiguration; import com.sinch.sdk.core.utils.StringUtil; -import com.sinch.sdk.domains.numberlookup.api.v2.NumberLookupV2Service; +import com.sinch.sdk.domains.numberlookup.models.v2.request.NumberLookupRequest; +import com.sinch.sdk.domains.numberlookup.models.v2.response.NumberLookupResponse; import com.sinch.sdk.models.NumberLookupContext; import com.sinch.sdk.models.UnifiedCredentials; import java.util.AbstractMap; @@ -31,7 +33,7 @@ public class NumberLookupService private volatile String uriUUID; private volatile Map authManagers; - private volatile NumberLookupV2Service lookup; + private volatile NumberLookupServiceFacade lookup; public NumberLookupService( UnifiedCredentials credentials, @@ -44,25 +46,24 @@ public NumberLookupService( this.httpClientSupplier = httpClientSupplier; } - @Override - public NumberLookupV2Service lookup() { + NumberLookupServiceFacade getLookupFacade() { if (null == this.lookup) { synchronized (this) { if (null == this.lookup) { instanceLazyInit(); this.lookup = - new NumberLookupV2ServiceImpl( - httpClientSupplier.get(), - context.getNumberLookupServer(), - authManagers, - HttpMapper.getInstance(), - uriUUID); + new NumberLookupServiceFacade(uriUUID, context, httpClientSupplier, authManagers); } } } return this.lookup; } + @Override + public NumberLookupResponse lookup(NumberLookupRequest numberLookupRequest) throws ApiException { + return getLookupFacade().lookup(numberLookupRequest); + } + private void instanceLazyInit() { if (null != this.authManagers) { return; diff --git a/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupServiceFacade.java b/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupServiceFacade.java new file mode 100644 index 000000000..14b3aedf1 --- /dev/null +++ b/client/src/main/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupServiceFacade.java @@ -0,0 +1,37 @@ +package com.sinch.sdk.domains.numberlookup.api.v2.adapters; + +import com.sinch.sdk.core.exceptions.ApiException; +import com.sinch.sdk.core.http.AuthManager; +import com.sinch.sdk.core.http.HttpClient; +import com.sinch.sdk.core.http.HttpMapper; +import com.sinch.sdk.domains.numberlookup.api.v2.NumberLookupV2Service; +import com.sinch.sdk.domains.numberlookup.models.v2.request.NumberLookupRequest; +import com.sinch.sdk.domains.numberlookup.models.v2.response.NumberLookupResponse; +import com.sinch.sdk.models.NumberLookupContext; +import java.util.Map; +import java.util.function.Supplier; + +final class NumberLookupServiceFacade + implements com.sinch.sdk.domains.numberlookup.api.v2.NumberLookupService { + + private final NumberLookupV2Service lookup; + + NumberLookupServiceFacade( + String uriUUID, + NumberLookupContext context, + Supplier httpClientSupplier, + Map authManagers) { + this.lookup = + new NumberLookupV2ServiceImpl( + httpClientSupplier.get(), + context.getNumberLookupServer(), + authManagers, + HttpMapper.getInstance(), + uriUUID); + } + + @Override + public NumberLookupResponse lookup(NumberLookupRequest numberLookupRequest) throws ApiException { + return lookup.lookup(numberLookupRequest); + } +} diff --git a/client/src/test/java/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupServiceTest.java b/client/src/test/java/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupServiceTest.java index c6d7db2d7..85cfe07a6 100644 --- a/client/src/test/java/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupServiceTest.java +++ b/client/src/test/java/com/sinch/sdk/domains/numberlookup/api/v2/adapters/NumberLookupServiceTest.java @@ -10,6 +10,7 @@ class NumberLookupServiceTest { @Test void checkCredentialsNumberLookup() { - CredentialsValidationHelper.checkCredentials(() -> httpClient, NumberLookupService::lookup); + CredentialsValidationHelper.checkCredentials( + () -> httpClient, NumberLookupService::getLookupFacade); } } diff --git a/client/src/test/java/com/sinch/sdk/e2e/domains/numberlookup/v2/LookupsSteps.java b/client/src/test/java/com/sinch/sdk/e2e/domains/numberlookup/v2/LookupsSteps.java index 0423e77da..f2b0daf88 100644 --- a/client/src/test/java/com/sinch/sdk/e2e/domains/numberlookup/v2/LookupsSteps.java +++ b/client/src/test/java/com/sinch/sdk/e2e/domains/numberlookup/v2/LookupsSteps.java @@ -29,7 +29,7 @@ public class LookupsSteps { @Given("the Number Lookup service is available") public void serviceAvailable() { - service = Config.getSinchClient().lookup().lookup(); + service = Config.getSinchClient().lookup().v2(); Assertions.assertNotNull(service, "Number Lookup service is not available"); } diff --git a/examples/snippets/src/main/java/numberlookup/Lookup.java b/examples/snippets/src/main/java/numberlookup/Lookup.java index f74dfa51d..c9057af8b 100644 --- a/examples/snippets/src/main/java/numberlookup/Lookup.java +++ b/examples/snippets/src/main/java/numberlookup/Lookup.java @@ -39,7 +39,7 @@ public static void main(String[] args) { SinchClient client = new SinchClient(configuration); - NumberLookupV2Service numberLookupService = client.lookup().lookup(); + NumberLookupV2Service numberLookupService = client.lookup().v2(); NumberLookupRequest request = NumberLookupRequest.builder() From 2dd94a5cef0be088e7c20f94536c9db11f61a4f8 Mon Sep 17 00:00:00 2001 From: Eduardo San Segundo Date: Wed, 10 Jun 2026 17:56:15 +0200 Subject: [PATCH 3/4] Added READMEs files --- examples/snippets/README.md | 1 + examples/snippets/src/main/java/numberlookup/Lookup.java | 2 +- examples/snippets/src/main/java/numberlookup/README.md | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 examples/snippets/src/main/java/numberlookup/README.md diff --git a/examples/snippets/README.md b/examples/snippets/README.md index 6b832b4d3..ff2f4c4a4 100644 --- a/examples/snippets/README.md +++ b/examples/snippets/README.md @@ -41,5 +41,6 @@ launcher numbers/regions/List - Numbers: [README.md](src/main/java/numbers/README.md) - SMS: [README.md](src/main/java/sms/README.md) - Verification: [README.md](src/main/java/verification/README.md) +- Number Lookup: [README.md](src/main/java/numberlookup/README.md) - Voice: [README.md](src/main/java/voice/README.md) diff --git a/examples/snippets/src/main/java/numberlookup/Lookup.java b/examples/snippets/src/main/java/numberlookup/Lookup.java index c9057af8b..40bf4dfaf 100644 --- a/examples/snippets/src/main/java/numberlookup/Lookup.java +++ b/examples/snippets/src/main/java/numberlookup/Lookup.java @@ -28,7 +28,7 @@ public static void main(String[] args) { String keySecret = Settings.getKeySecret().orElse("MY_KEY_SECRET"); // The phone number you want to lookup in E.164 format - String phoneNumber = Settings.getPhoneNumber().orElse("PHONE_NUMBER"); + String phoneNumber = "PHONE_NUMBER"; Configuration configuration = Configuration.builder() diff --git a/examples/snippets/src/main/java/numberlookup/README.md b/examples/snippets/src/main/java/numberlookup/README.md new file mode 100644 index 000000000..bbb2b0d1e --- /dev/null +++ b/examples/snippets/src/main/java/numberlookup/README.md @@ -0,0 +1,7 @@ +# Number Lookup snippets +Sinch Java SDK Code Snippets Repository for NumberLookup APIs + +See main [README.md](../../../../README.md) for how to execute snippets + +- Number Lookup + - [numberlookup/Lookup](Lookup.java) From 53bc253579e17219f15c3fb1d8285ef745290d40 Mon Sep 17 00:00:00 2001 From: Eduardo San Segundo Date: Thu, 11 Jun 2026 09:19:50 +0200 Subject: [PATCH 4/4] README in alphabetical order --- examples/snippets/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/snippets/README.md b/examples/snippets/README.md index ff2f4c4a4..bc9d380b8 100644 --- a/examples/snippets/README.md +++ b/examples/snippets/README.md @@ -38,9 +38,9 @@ launcher numbers/regions/List ## Available Snippets - Conversation: [README.md](src/main/java/conversation/README.md) +- Number Lookup: [README.md](src/main/java/numberlookup/README.md) - Numbers: [README.md](src/main/java/numbers/README.md) - SMS: [README.md](src/main/java/sms/README.md) - Verification: [README.md](src/main/java/verification/README.md) -- Number Lookup: [README.md](src/main/java/numberlookup/README.md) - Voice: [README.md](src/main/java/voice/README.md)