Skip to content

Commit 1551f06

Browse files
JianpingChenJP ChenDominikMe
authored
[Communication]: Rename ConnectionString and move it to implementation (Azure#18794)
* Rename ConnectionString and move it to implementation * Move HmacAuthenticationPolicy to implementation * Rename token to initialToken * Address review comments * Remove CommunicationClientCredential * Tidy up code styling * Minor code style change * IdentifierSerializer should throw when Id is null for TeamsUserIdentifier * Update a javadoc to explain getId * Make require core transitive in administration module * Serializer should not throw for future kind * Update sdk/communication/azure-communication-common/src/main/java/com/azure/communication/common/CommunicationIdentifierSerializer.java Co-authored-by: Dominik <domessin@microsoft.com> * Delete extra throws phrase Co-authored-by: JP Chen <jiach@microsoft.com> Co-authored-by: Dominik <domessin@microsoft.com>
1 parent 397573e commit 1551f06

File tree

22 files changed

+238
-223
lines changed

22 files changed

+238
-223
lines changed

eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,8 @@ the main ServiceBusClientBuilder. -->
393393
<suppress checks="com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck" files="com.azure.communication.chat.implementation.AzureCommunicationChatServiceImpl.java"/>
394394
<!-- Checkstyle suppressions for the auto generated Phone Number Administration Implementation -->
395395
<suppress checks="LineLength" files="com.azure.communication.administration.implementation.PhoneNumberAdministrationsImpl.java"/>
396+
<suppress checks="com.azure.tools.checkstyle.checks.HttpPipelinePolicyCheck"
397+
files="com.azure.communication.common.implementation.HmacAuthenticationPolicy.java"/>
396398
<suppress checks="[a-zA-Z0-9]*" files="com.azure.data.schemaregistry.implementation.*"/>
397399

398400
<!-- Suppress the check on synapse code-gen classes -->

sdk/communication/azure-communication-administration/src/main/java/com/azure/communication/administration/CommunicationIdentityClientBuilder.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33

44
package com.azure.communication.administration;
55

6-
import com.azure.communication.common.CommunicationClientCredential;
7-
import com.azure.communication.common.ConnectionString;
8-
import com.azure.communication.common.HmacAuthenticationPolicy;
6+
import com.azure.communication.common.implementation.CommunicationConnectionString;
7+
import com.azure.communication.common.implementation.HmacAuthenticationPolicy;
98
import com.azure.communication.administration.implementation.CommunicationIdentityClientImpl;
109
import com.azure.communication.administration.implementation.CommunicationIdentityClientImplBuilder;
1110
import com.azure.core.annotation.ServiceClientBuilder;
1211
import com.azure.core.credential.TokenCredential;
12+
import com.azure.core.credential.AzureKeyCredential;
1313
import com.azure.core.http.HttpClient;
1414
import com.azure.core.http.HttpPipeline;
1515
import com.azure.core.http.HttpPipelineBuilder;
@@ -36,18 +36,18 @@
3636
public final class CommunicationIdentityClientBuilder {
3737
private static final String SDK_NAME = "name";
3838
private static final String SDK_VERSION = "version";
39-
private static final String COMMUNICATION_ADMINISTRATION_PROPERTIES =
39+
private static final String COMMUNICATION_ADMINISTRATION_PROPERTIES =
4040
"azure-communication-administration.properties";
4141

4242
private final ClientLogger logger = new ClientLogger(CommunicationIdentityClientBuilder.class);
4343
private String endpoint;
44-
private CommunicationClientCredential accessKeyCredential;
44+
private AzureKeyCredential azureKeyCredential;
4545
private TokenCredential tokenCredential;
4646
private HttpClient httpClient;
4747
private HttpLogOptions httpLogOptions = new HttpLogOptions();
4848
private HttpPipeline pipeline;
49-
private Configuration configuration;
50-
private final Map<String, String> properties = CoreUtils.getProperties(COMMUNICATION_ADMINISTRATION_PROPERTIES);
49+
private Configuration configuration;
50+
private final Map<String, String> properties = CoreUtils.getProperties(COMMUNICATION_ADMINISTRATION_PROPERTIES);
5151
private final List<HttpPipelinePolicy> customPolicies = new ArrayList<HttpPipelinePolicy>();
5252

5353
/**
@@ -93,7 +93,7 @@ public CommunicationIdentityClientBuilder credential(TokenCredential tokenCreden
9393
*/
9494
public CommunicationIdentityClientBuilder accessKey(String accessKey) {
9595
Objects.requireNonNull(accessKey, "'accessKey' cannot be null.");
96-
this.accessKeyCredential = new CommunicationClientCredential(accessKey);
96+
this.azureKeyCredential = new AzureKeyCredential(accessKey);
9797
return this;
9898
}
9999

@@ -105,7 +105,7 @@ public CommunicationIdentityClientBuilder accessKey(String accessKey) {
105105
*/
106106
public CommunicationIdentityClientBuilder connectionString(String connectionString) {
107107
Objects.requireNonNull(connectionString, "'connectionString' cannot be null.");
108-
ConnectionString connectionStringObject = new ConnectionString(connectionString);
108+
CommunicationConnectionString connectionStringObject = new CommunicationConnectionString(connectionString);
109109
String endpoint = connectionStringObject.getEndpoint();
110110
String accessKey = connectionStringObject.getAccessKey();
111111
this
@@ -129,7 +129,7 @@ public CommunicationIdentityClientBuilder httpClient(HttpClient httpClient) {
129129
/**
130130
* Apply additional HttpPipelinePolicy
131131
*
132-
* @param customPolicy HttpPipelinePolicy object to be applied after
132+
* @param customPolicy HttpPipelinePolicy object to be applied after
133133
* AzureKeyCredentialPolicy, UserAgentPolicy, RetryPolicy, and CookiePolicy
134134
* @return CommunicationIdentityClientBuilder
135135
*/
@@ -203,28 +203,28 @@ private CommunicationIdentityClientImpl createServiceImpl() {
203203

204204
HttpPipeline builderPipeline = this.pipeline;
205205
if (this.pipeline == null) {
206-
builderPipeline = createHttpPipeline(httpClient,
207-
createHttpPipelineAuthPolicy(),
206+
builderPipeline = createHttpPipeline(httpClient,
207+
createHttpPipelineAuthPolicy(),
208208
customPolicies);
209209
}
210210

211211
CommunicationIdentityClientImplBuilder clientBuilder = new CommunicationIdentityClientImplBuilder();
212212
clientBuilder.endpoint(endpoint)
213213
.pipeline(builderPipeline);
214-
214+
215215
return clientBuilder.buildClient();
216216
}
217217

218218
private HttpPipelinePolicy createHttpPipelineAuthPolicy() {
219-
if (this.tokenCredential != null && this.accessKeyCredential != null) {
219+
if (this.tokenCredential != null && this.azureKeyCredential != null) {
220220
throw logger.logExceptionAsError(
221221
new IllegalArgumentException("Both 'credential' and 'accessKey' are set. Just one may be used."));
222222
}
223-
if (this.tokenCredential != null) {
223+
if (this.tokenCredential != null) {
224224
return new BearerTokenAuthenticationPolicy(
225-
this.tokenCredential, "https://communication.azure.com//.default");
226-
} else if (this.accessKeyCredential != null) {
227-
return new HmacAuthenticationPolicy(this.accessKeyCredential);
225+
this.tokenCredential, "https://communication.azure.com//.default");
226+
} else if (this.azureKeyCredential != null) {
227+
return new HmacAuthenticationPolicy(this.azureKeyCredential);
228228
} else {
229229
throw logger.logExceptionAsError(
230230
new IllegalArgumentException("Missing credential information while building a client."));
@@ -257,5 +257,5 @@ private void applyRequiredPolicies(List<HttpPipelinePolicy> policies) {
257257
policies.add(new RetryPolicy());
258258
policies.add(new CookiePolicy());
259259
policies.add(new HttpLoggingPolicy(httpLogOptions));
260-
}
260+
}
261261
}

sdk/communication/azure-communication-administration/src/main/java/com/azure/communication/administration/PhoneNumberClientBuilder.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
import com.azure.communication.administration.implementation.PhoneNumberAdminClientImpl;
66
import com.azure.communication.administration.implementation.PhoneNumberAdminClientImplBuilder;
7-
import com.azure.communication.common.CommunicationClientCredential;
8-
import com.azure.communication.common.ConnectionString;
9-
import com.azure.communication.common.HmacAuthenticationPolicy;
7+
import com.azure.communication.common.implementation.CommunicationConnectionString;
8+
import com.azure.communication.common.implementation.HmacAuthenticationPolicy;
109
import com.azure.core.annotation.ServiceClientBuilder;
10+
import com.azure.core.credential.AzureKeyCredential;
1111
import com.azure.core.credential.TokenCredential;
1212
import com.azure.core.http.HttpClient;
1313
import com.azure.core.http.HttpPipeline;
@@ -46,7 +46,7 @@ public final class PhoneNumberClientBuilder {
4646
private HttpPipeline pipeline;
4747
private HttpClient httpClient;
4848
private HttpLogOptions httpLogOptions;
49-
private CommunicationClientCredential accessKeyCredential;
49+
private AzureKeyCredential azureKeyCredential;
5050
private TokenCredential tokenCredential;
5151
private Configuration configuration;
5252
private final List<HttpPipelinePolicy> additionalPolicies = new ArrayList<>();
@@ -103,15 +103,15 @@ public PhoneNumberClientBuilder httpLogOptions(HttpLogOptions httpLogOptions) {
103103
}
104104

105105
/**
106-
* Set CommunicationClientCredential for authorization
106+
* Set AzureKeyCredential for authorization
107107
*
108-
* @param accessKey access key for initalizing CommunicationClientCredential
108+
* @param accessKey access key for initalizing AzureKeyCredential
109109
* @return The updated {@link PhoneNumberClientBuilder} object.
110110
* @throws NullPointerException If {@code accessKey} is {@code null}.
111111
*/
112112
public PhoneNumberClientBuilder accessKey(String accessKey) {
113113
Objects.requireNonNull(accessKey, "'accessKey' cannot be null.");
114-
this.accessKeyCredential = new CommunicationClientCredential(accessKey);
114+
this.azureKeyCredential = new AzureKeyCredential(accessKey);
115115
return this;
116116
}
117117

@@ -129,15 +129,15 @@ public PhoneNumberClientBuilder credential(TokenCredential tokenCredential) {
129129

130130

131131
/**
132-
* Set the endpoint and CommunicationClientCredential for authorization
132+
* Set the endpoint and AzureKeyCredential for authorization
133133
*
134-
* @param connectionString connection string for setting endpoint and initalizing CommunicationClientCredential
134+
* @param connectionString connection string for setting endpoint and initalizing AzureKeyCredential
135135
* @return The updated {@link PhoneNumberClientBuilder} object.
136136
* @throws NullPointerException If {@code connectionString} is {@code null}.
137137
*/
138138
public PhoneNumberClientBuilder connectionString(String connectionString) {
139139
Objects.requireNonNull(connectionString, "'connectionString' cannot be null.");
140-
ConnectionString connectionStringObject = new ConnectionString(connectionString);
140+
CommunicationConnectionString connectionStringObject = new CommunicationConnectionString(connectionString);
141141
String endpoint = connectionStringObject.getEndpoint();
142142
String accessKey = connectionStringObject.getAccessKey();
143143
this
@@ -217,15 +217,15 @@ PhoneNumberAsyncClient createPhoneNumberAsyncClient(PhoneNumberAdminClientImpl p
217217
}
218218

219219
HttpPipelinePolicy createAuthenticationPolicy() {
220-
if (this.tokenCredential != null && this.accessKeyCredential != null) {
220+
if (this.tokenCredential != null && this.azureKeyCredential != null) {
221221
throw logger.logExceptionAsError(
222222
new IllegalArgumentException("Both 'credential' and 'accessKey' are set. Just one may be used."));
223223
}
224-
if (this.tokenCredential != null) {
224+
if (this.tokenCredential != null) {
225225
return new BearerTokenAuthenticationPolicy(
226-
this.tokenCredential, "https://communication.azure.com//.default");
227-
} else if (this.accessKeyCredential != null) {
228-
return new HmacAuthenticationPolicy(this.accessKeyCredential);
226+
this.tokenCredential, "https://communication.azure.com//.default");
227+
} else if (this.azureKeyCredential != null) {
228+
return new HmacAuthenticationPolicy(this.azureKeyCredential);
229229
} else {
230230
throw logger.logExceptionAsError(
231231
new NullPointerException("Missing credential information while building a client."));

sdk/communication/azure-communication-administration/src/main/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
module com.azure.communication.administration {
55

66
requires transitive com.azure.communication.common;
7+
requires transitive com.azure.core;
78

89
// public API surface area
910
exports com.azure.communication.administration;

sdk/communication/azure-communication-administration/src/test/java/com/azure/communication/administration/PhoneNumberClientBuilderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
package com.azure.communication.administration;
44

55
import com.azure.communication.administration.implementation.PhoneNumberAdminClientImpl;
6-
import com.azure.communication.common.HmacAuthenticationPolicy;
6+
import com.azure.communication.common.implementation.HmacAuthenticationPolicy;
77
import com.azure.core.http.HttpClient;
88
import com.azure.core.http.HttpPipeline;
99
import com.azure.core.http.policy.*;

sdk/communication/azure-communication-administration/src/test/java/com/azure/communication/administration/PhoneNumberIntegrationTestBase.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import java.util.regex.Matcher;
1111
import java.util.regex.Pattern;
1212

13-
import com.azure.communication.common.ConnectionString;
13+
import com.azure.communication.common.implementation.CommunicationConnectionString;
1414
import com.azure.core.credential.AccessToken;
1515
import com.azure.core.credential.TokenCredential;
1616
import com.azure.core.credential.TokenRequestContext;
@@ -30,11 +30,11 @@ public class PhoneNumberIntegrationTestBase extends TestBase {
3030
Configuration.getGlobalConfiguration().get("COMMUNICATION_SERVICE_ENDPOINT", "https://REDACTED.communication.azure.com");
3131
private static final String CONNECTION_STRING = Configuration.getGlobalConfiguration()
3232
.get("COMMUNICATION_LIVETEST_CONNECTION_STRING", "endpoint=https://REDACTED.communication.azure.com/;accesskey=QWNjZXNzS2V5");
33-
34-
protected static final String PHONE_NUMBER =
33+
34+
protected static final String PHONE_NUMBER =
3535
Configuration.getGlobalConfiguration().get("COMMUNICATION_PHONE_NUMBER", "+11234567891");
3636
protected static final String COUNTRY_CODE =
37-
Configuration.getGlobalConfiguration().get("COUNTRY_CODE", "US");
37+
Configuration.getGlobalConfiguration().get("COUNTRY_CODE", "US");
3838
protected static final String AREA_CODE =
3939
Configuration.getGlobalConfiguration().get("AREA_CODE", "619");
4040
protected static final String LOCALE =
@@ -93,16 +93,16 @@ protected PhoneNumberClientBuilder getClientBuilderWithConnectionString(HttpClie
9393
redactors.add(data -> redact(data, JSON_PROPERTY_VALUE_REDACTION_PATTERN.matcher(data), "REDACTED"));
9494
builder.addPolicy(interceptorManager.getRecordPolicy(redactors));
9595
}
96-
96+
9797
return builder;
9898
}
9999

100100
protected PhoneNumberClientBuilder getClientBuilderUsingManagedIdentity(HttpClient httpClient) {
101101
PhoneNumberClientBuilder builder = new PhoneNumberClientBuilder();
102102
builder
103-
.endpoint(new ConnectionString(CONNECTION_STRING).getEndpoint())
103+
.endpoint(new CommunicationConnectionString(CONNECTION_STRING).getEndpoint())
104104
.httpClient(httpClient == null ? interceptorManager.getPlaybackClient() : httpClient);
105-
105+
106106
if (getTestMode() == TestMode.PLAYBACK) {
107107
builder.credential(new FakeCredentials());
108108
} else {

sdk/communication/azure-communication-common/src/main/java/com/azure/communication/common/CommunicationIdentifier.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88
public abstract class CommunicationIdentifier {
99
/**
10-
* Get string representation of the identifier
11-
* @return string representation of the identifier
10+
* Get full id of the identifier
11+
* @return full id of the identifier
1212
*/
1313
public abstract String getId();
1414

sdk/communication/azure-communication-common/src/main/java/com/azure/communication/common/CommunicationIdentifierSerializer.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@
66
import java.util.Objects;
77

88
class CommunicationIdentifierSerializer {
9+
/**
10+
* Deserialize CommunicationIdentifierModel into CommunicationIdentifier
11+
* @param identifier CommunicationIdentifierModel to be deserialized
12+
* @return deserialized CommunicationIdentifier
13+
*/
914
public static CommunicationIdentifier deserialize(CommunicationIdentifierModel identifier) {
15+
1016
String id = identifier.getId();
1117
CommunicationIdentifierKind kind = identifier.getKind();
1218

@@ -29,6 +35,7 @@ public static CommunicationIdentifier deserialize(CommunicationIdentifierModel i
2935
if (kind == CommunicationIdentifierKind.MICROSOFT_TEAMS_USER) {
3036
Objects.requireNonNull(identifier.getMicrosoftTeamsUserId());
3137
Objects.requireNonNull(identifier.getCloudEnvironmentModel());
38+
Objects.requireNonNull(identifier.getId());
3239
return new MicrosoftTeamsUserIdentifier(identifier.getMicrosoftTeamsUserId(), identifier.isAnonymous())
3340
.setId(identifier.getId())
3441
.setCloudEnvironment(CommunicationCloudEnvironment.fromModel(identifier.getCloudEnvironmentModel()));
@@ -38,7 +45,15 @@ public static CommunicationIdentifier deserialize(CommunicationIdentifierModel i
3845
return new UnknownIdentifier(id);
3946
}
4047

41-
public static CommunicationIdentifierModel serialize(CommunicationIdentifier identifier) {
48+
/**
49+
* Serialize CommunicationIdentifier into CommunicationIdentifierModel
50+
* @param identifier CommunicationIdentifier object to be serialized
51+
* @return CommunicationIdentifierModel
52+
* @throws IllegalArgumentException when identifier is an unknown class derived from
53+
* CommunicationIdentifier
54+
*/
55+
public static CommunicationIdentifierModel serialize(CommunicationIdentifier identifier)
56+
throws IllegalArgumentException {
4257
if (identifier instanceof CommunicationUserIdentifier) {
4358
return new CommunicationIdentifierModel()
4459
.setKind(CommunicationIdentifierKind.COMMUNICATION_USER)
@@ -68,8 +83,12 @@ public static CommunicationIdentifierModel serialize(CommunicationIdentifier ide
6883
.setCloudEnvironmentModel(new CommunicationCloudEnvironmentModel(teamsUserIdentifier.getCloudEnvironment().toString()));
6984
}
7085

71-
return new CommunicationIdentifierModel()
72-
.setKind(CommunicationIdentifierKind.UNKNOWN)
73-
.setId(((UnknownIdentifier) identifier).getId());
86+
if (identifier instanceof UnknownIdentifier) {
87+
return new CommunicationIdentifierModel()
88+
.setKind(CommunicationIdentifierKind.UNKNOWN)
89+
.setId(((UnknownIdentifier) identifier).getId());
90+
}
91+
92+
throw new IllegalArgumentException(String.format("Unknown identifier class '%s'", identifier.getClass().getName()));
7493
}
7594
}

0 commit comments

Comments
 (0)