Skip to content

Commit 40ab17a

Browse files
authored
Bug fixes (Azure#38034)
* Bug fixes * Fix build * Update version * Update version * Update version * Update version * update version_client.txt * update version_client.txt * Update chaNGELOG.md * Fix versions * Make changes non-breaking * Fix build * UpdateQueue test * Address comments
1 parent fac376f commit 40ab17a

File tree

9 files changed

+46
-26
lines changed

9 files changed

+46
-26
lines changed

eng/versioning/version_client.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ com.azure:azure-communication-common;1.2.15;1.3.0-beta.2
7272
com.azure:azure-communication-common-perf;1.0.0-beta.1;1.0.0-beta.1
7373
com.azure:azure-communication-email;1.0.9;1.1.0-beta.1
7474
com.azure:azure-communication-identity;1.5.1;1.6.0-beta.1
75-
com.azure:azure-communication-jobrouter;1.0.0;1.1.0-beta.1
75+
com.azure:azure-communication-jobrouter;1.0.0;1.1.0
7676
com.azure:azure-communication-networktraversal;1.1.0-beta.2;1.1.0-beta.3
7777
com.azure:azure-communication-phonenumbers;1.1.9;1.2.0-beta.1
7878
com.azure:azure-communication-rooms;1.0.7;1.1.0-beta.2

sdk/communication/azure-communication-jobrouter/CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
# Release History
22

3-
## 1.1.0-beta.1 (Unreleased)
3+
## 1.1.0 (Unreleased)
44

55
### Features Added
66

77
### Breaking Changes
88

99
### Bugs Fixed
10+
* NullPointerException in routerQueue.getLabels()
11+
* createJob() deserialization error.
1012

1113
### Other Changes
1214

sdk/communication/azure-communication-jobrouter/README.md

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,20 @@ An exception policy controls the behavior of a Job based on a trigger and execut
130130
## Examples
131131

132132
### Client Initialization
133-
To initialize the JobRouter Client, the connection string can be used to instantiate.
134-
Alternatively, you can also use Active Directory authentication using DefaultAzureCredential.
133+
JobRouter has two clients, JobRouterAdministrationClient and JobRouterClient. Both of them
134+
can be initialized using the endpoint and access key.
135135

136136
```java
137-
JobRouterClient jobRouterClient = new JobRouterClientBuilder()
138-
.connectionString(connectionString)
139-
.buildClient();
137+
String endpoint = <endpoint>;
138+
String accessKey = <accessKey>;
139+
JobRouterAdministrationClient routerAdminClient = new JobRouterAdministrationClientBuilder()
140+
.endpoint(endpoint)
141+
.addPolicy(new HmacAuthenticationPolicy(new AzureKeyCredential(accessKey)))
142+
.buildClient();
143+
JobRouterClient routerClient = new JobRouterClientBuilder()
144+
.endpoint(endpoint)
145+
.addPolicy(new HmacAuthenticationPolicy(new AzureKeyCredential(accessKey)))
146+
.buildClient();
140147
```
141148

142149
Using `JobRouterClient` created from builder, create Job Router entities as described below.
@@ -151,14 +158,14 @@ CreateDistributionPolicyOptions createDistributionPolicyOptions = new CreateDist
151158
.setMinConcurrentOffers(1)
152159
.setMaxConcurrentOffers(10)
153160
);
154-
DistributionPolicy distributionPolicy = jobRouterClient.createDistributionPolicy(createDistributionPolicyOptions);
161+
DistributionPolicy distributionPolicy = routerAdminClient.createDistributionPolicy(createDistributionPolicyOptions);
155162
```
156163

157164
### Create a Queue
158165

159166
```java
160167
CreateQueueOptions createQueueOptions = new CreateQueueOptions("queue-id", distributionPolicy.getId());
161-
RouterQueue jobQueue = jobRouterClient.createQueue(createQueueOptions);
168+
RouterQueue jobQueue = routerAdminClient.createQueue(createQueueOptions);
162169
```
163170

164171
### Create a Job
@@ -175,7 +182,7 @@ CreateJobOptions createJobOptions = new CreateJobOptions("job-id", "chat-channel
175182
.setValue(new LabelValue(10));
176183
}}
177184
);
178-
RouterJob routerJob = jobRouterClient.createJob(createJobOptions);
185+
RouterJob routerJob = routerClient.createJob(createJobOptions);
179186
```
180187

181188
### Create a Worker
@@ -214,7 +221,7 @@ CreateWorkerOptions createWorkerOptions = new CreateWorkerOptions(workerId, 10)
214221
.setChannels(channels)
215222
.setQueues(queues);
216223

217-
RouterWorker routerWorker = jobRouterClient.createWorker(createWorkerOptions);
224+
RouterWorker routerWorker = routerClient.createWorker(createWorkerOptions);
218225
```
219226

220227
## Troubleshooting

sdk/communication/azure-communication-jobrouter/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "java",
44
"TagPrefix": "java/communication/azure-communication-jobrouter",
5-
"Tag": "java/communication/azure-communication-jobrouter_4ac2c0636a"
5+
"Tag": "java/communication/azure-communication-jobrouter_5a7c315465"
66
}

sdk/communication/azure-communication-jobrouter/customization/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>azure-communication-jobrouter</artifactId>
77
<groupId>com.azure</groupId>
8-
<version>1.1.0-beta.1</version> <!-- {x-version-update;com.azure:azure-communication-jobrouter;current} -->
8+
<version>1.1.0</version> <!-- {x-version-update;com.azure:azure-communication-jobrouter;current} -->
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

sdk/communication/azure-communication-jobrouter/pom.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<groupId>com.azure</groupId>
1616
<artifactId>azure-communication-jobrouter</artifactId>
17-
<version>1.1.0-beta.1</version> <!-- {x-version-update;com.azure:azure-communication-jobrouter;current} -->
17+
<version>1.1.0</version> <!-- {x-version-update;com.azure:azure-communication-jobrouter;current} -->
1818

1919
<name>Microsoft Azure client library for Azure Communication Services JobRouter application</name>
2020
<description>
@@ -44,7 +44,6 @@
4444
--add-opens com.azure.communication.jobrouter/com.azure.communication.jobrouter.implementation=ALL-UNNAMED
4545
--add-opens com.azure.communication.common/com.azure.communication.common.implementation=ALL-UNNAMED
4646
--add-opens com.azure.core/com.azure.core.implementation.util=ALL-UNNAMED
47-
--add-opens com.azure.http.netty/com.azure.core.http.netty.NettyAsyncHttpClientBuilder=ALL-UNNAMED
4847
</javaModulesSurefireArgLine>
4948
</properties>
5049

sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/JobRouterClient.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package com.azure.communication.jobrouter;
55

66
import com.azure.communication.jobrouter.implementation.JobRouterClientImpl;
7+
import com.azure.communication.jobrouter.implementation.accesshelpers.RouterJobConstructorProxy;
78
import com.azure.communication.jobrouter.implementation.accesshelpers.RouterWorkerConstructorProxy;
89
import com.azure.communication.jobrouter.implementation.converters.JobAdapter;
910
import com.azure.communication.jobrouter.implementation.converters.WorkerAdapter;
@@ -528,9 +529,13 @@ public BinaryData updateJob(String jobId, BinaryData resource, RequestOptions re
528529
@ServiceMethod(returns = ReturnType.SINGLE)
529530
public Response<BinaryData> createJobWithResponse(CreateJobOptions createJobOptions,
530531
RequestOptions requestOptions) {
532+
// Note: Update return type to Response<RouterJob> in version 2.
531533
RouterJobInternal routerJob = JobAdapter.convertCreateJobOptionsToRouterJob(createJobOptions);
532-
return this.serviceClient.upsertJobWithResponse(createJobOptions.getJobId(), BinaryData.fromObject(routerJob),
533-
requestOptions);
534+
Response<BinaryData> response = this.serviceClient.upsertJobWithResponse(createJobOptions.getJobId(),
535+
BinaryData.fromObject(routerJob), requestOptions);
536+
return new SimpleResponse<BinaryData>(response.getRequest(), response.getStatusCode(), response.getHeaders(),
537+
BinaryData
538+
.fromObject(RouterJobConstructorProxy.create(response.getValue().toObject(RouterJobInternal.class))));
534539
}
535540

536541
/**

sdk/communication/azure-communication-jobrouter/src/main/java/com/azure/communication/jobrouter/implementation/converters/QueueAdapter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public class QueueAdapter {
2121
* @return JobQueue
2222
*/
2323
public static RouterQueueInternal convertCreateQueueOptionsToRouterQueueInternal(CreateQueueOptions createQueueOptions) {
24-
Map<String, Object> labels = createQueueOptions.getLabels().entrySet()
24+
Map<String, Object> labels = createQueueOptions.getLabels() != null ? createQueueOptions.getLabels().entrySet()
2525
.stream()
2626
.collect(Collectors.toMap(entry -> entry.getKey(),
27-
entry -> RouterValueAdapter.getValue(entry.getValue())));
27+
entry -> RouterValueAdapter.getValue(entry.getValue()))) : null;
2828

2929
return new RouterQueueInternal()
3030
.setName(createQueueOptions.getName())
@@ -34,9 +34,9 @@ public static RouterQueueInternal convertCreateQueueOptionsToRouterQueueInternal
3434
}
3535

3636
public static RouterQueueInternal convertRouterQueueToRouterQueueInternal(RouterQueue routerQueue) {
37-
Map<String, Object> labels = routerQueue.getLabels()
37+
Map<String, Object> labels = routerQueue.getLabels() != null ? routerQueue.getLabels()
3838
.entrySet().stream()
39-
.collect(Collectors.toMap(entry -> entry.getKey(), entry -> RouterValueAdapter.getValue(entry.getValue())));
39+
.collect(Collectors.toMap(entry -> entry.getKey(), entry -> RouterValueAdapter.getValue(entry.getValue()))) : null;
4040
return new RouterQueueInternal()
4141
.setEtag(routerQueue.getEtag())
4242
.setId(routerQueue.getId())

sdk/communication/azure-communication-jobrouter/src/test/java/com.azure.communication.jobrouter/RouterQueueLiveTests.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,22 @@
1111
import com.azure.core.util.BinaryData;
1212
import org.junit.jupiter.params.ParameterizedTest;
1313
import org.junit.jupiter.params.provider.MethodSource;
14+
import org.slf4j.LoggerFactory;
15+
import org.slf4j.Logger;
1416

1517
import java.util.HashMap;
1618
import java.util.Map;
1719

1820
import static org.junit.jupiter.api.Assertions.assertEquals;
21+
import static org.junit.jupiter.api.Assertions.assertTrue;
1922

2023
public class RouterQueueLiveTests extends JobRouterTestBase {
2124
private JobRouterClient jobRouterClient;
2225

2326
private JobRouterAdministrationClient routerAdminClient;
2427

28+
private static final Logger LOGGER = LoggerFactory.getLogger(RouterQueueLiveTests.class);
29+
2530
@ParameterizedTest
2631
@MethodSource("com.azure.core.test.TestBase#getHttpClients")
2732
public void createQueue(HttpClient httpClient) {
@@ -44,7 +49,7 @@ public void createQueue(HttpClient httpClient) {
4449
routerAdminClient.deleteDistributionPolicy(distributionPolicyId);
4550
}
4651

47-
// @ParameterizedTest
52+
@ParameterizedTest
4853
@MethodSource("com.azure.core.test.TestBase#getHttpClients")
4954
public void updateQueue(HttpClient httpClient) {
5055
// Setup
@@ -56,18 +61,20 @@ public void updateQueue(HttpClient httpClient) {
5661
String queueId = String.format("%s-CreateQueue-Queue", JAVA_LIVE_TESTS);
5762
RouterQueue queue = createQueue(routerAdminClient, queueId, distributionPolicy.getId());
5863

64+
String updatedRouterQueue = "{\"name\":\"JAVA_LIVE_TEST-CreateQueue-Queue\",\"distributionPolicyId\":\"JAVA_LIVE_TEST-CreateQueue-DistributionPolicy\",\"labels\":{\"Label_1\":\"UpdatedValue\"}}";
65+
5966
Map<String, RouterValue> updatedQueueLabels = new HashMap<String, RouterValue>() {
6067
{
6168
put("Label_1", new RouterValue("UpdatedValue"));
6269
}
6370
};
6471
// Action
65-
RouterQueue updatedRouterQueue = queue.setLabels(updatedQueueLabels);
66-
queue = routerAdminClient.updateQueueWithResponse(queueId, BinaryData.fromObject(updatedRouterQueue), new RequestOptions())
67-
.getValue().toObject(RouterQueue.class);
72+
BinaryData updatedQueue = routerAdminClient.updateQueueWithResponse(queueId, BinaryData.fromString(updatedRouterQueue), new RequestOptions())
73+
.getValue();
74+
LOGGER.info(updatedQueue.toString());
6875

6976
// Verify
70-
assertEquals(updatedQueueLabels.get("Label_1").getStringValue(), queue.getLabels().get("Label_1").getStringValue());
77+
assertTrue(updatedQueue.toString().contains("\"Label_1\":\"UpdatedValue\""));
7178

7279
// Cleanup
7380
routerAdminClient.deleteQueue(queueId);

0 commit comments

Comments
 (0)