Skip to content

Commit a016402

Browse files
committed
Fixed stage objects job command
1 parent 2f43352 commit a016402

File tree

4 files changed

+60
-18
lines changed

4 files changed

+60
-18
lines changed

ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import com.spectralogic.ds3client.Ds3Client;
1919
import com.spectralogic.ds3client.commands.GetBucketRequest;
2020
import com.spectralogic.ds3client.commands.GetBucketResponse;
21+
import com.spectralogic.ds3client.commands.spectrads3.DeleteBucketSpectraS3Request;
2122
import com.spectralogic.ds3client.commands.spectrads3.GetBulkJobSpectraS3Request;
23+
import com.spectralogic.ds3client.commands.spectrads3.StageObjectsJobSpectraS3Request;
2224
import com.spectralogic.ds3client.helpers.Ds3ClientHelpers;
2325
import com.spectralogic.ds3client.integration.test.helpers.TempStorageIds;
2426
import com.spectralogic.ds3client.integration.test.helpers.TempStorageUtil;
@@ -106,4 +108,34 @@ public void getObjectsWithVersioning() throws IOException, URISyntaxException {
106108
deleteAllContents(CLIENT, TEST_ENV_NAME);
107109
}
108110
}
111+
112+
@Test
113+
public void stageObjectsWithVersioning() throws IOException, URISyntaxException {
114+
try {
115+
HELPERS.ensureBucketExists(TEST_ENV_NAME, envDataPolicyId);
116+
final String objectName = "object_with_versions";
117+
118+
// Put different content for object twice
119+
loadTestBook(CLIENT, BOOKS[0], objectName, TEST_ENV_NAME); // putting beowulf as content
120+
loadTestBook(CLIENT, BOOKS[1], objectName, TEST_ENV_NAME); // putting sherlock holmes as content
121+
122+
// Get the version of the objects
123+
final GetBucketRequest getBucketRequest = new GetBucketRequest(TEST_ENV_NAME).withVersions(true);
124+
final GetBucketResponse getBucketResponse = CLIENT.getBucket(getBucketRequest);
125+
126+
assertThat(getBucketResponse.getListBucketResult().getObjects().size(), is(0));
127+
assertThat(getBucketResponse.getListBucketResult().getVersionedObjects().size(), is(2));
128+
129+
// Create bulk get job with both versions of object specified
130+
final List<Ds3Object> objects = getBucketResponse.getListBucketResult().getVersionedObjects().stream()
131+
.map(obj -> new Ds3Object(obj.getKey(), obj.getVersionId()))
132+
.collect(Collectors.toList());
133+
134+
final StageObjectsJobSpectraS3Request stageRequest = new StageObjectsJobSpectraS3Request(TEST_ENV_NAME, objects);
135+
CLIENT.stageObjectsJobSpectraS3(stageRequest);
136+
137+
} finally {
138+
CLIENT.deleteBucketSpectraS3(new DeleteBucketSpectraS3Request(TEST_ENV_NAME).withForce(true));
139+
}
140+
}
109141
}

ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,31 @@
1818

1919
import com.spectralogic.ds3client.commands.parsers.interfaces.AbstractResponseParser;
2020
import com.spectralogic.ds3client.commands.parsers.utils.ResponseParserUtils;
21+
import com.spectralogic.ds3client.commands.spectrads3.PutBulkJobSpectraS3Response;
2122
import com.spectralogic.ds3client.commands.spectrads3.StageObjectsJobSpectraS3Response;
23+
import com.spectralogic.ds3client.models.MasterObjectList;
2224
import com.spectralogic.ds3client.networking.WebResponse;
25+
import com.spectralogic.ds3client.serializer.XmlOutput;
26+
2327
import java.io.IOException;
28+
import java.io.InputStream;
2429

2530
public class StageObjectsJobSpectraS3ResponseParser extends AbstractResponseParser<StageObjectsJobSpectraS3Response> {
26-
private final int[] expectedStatusCodes = new int[]{};
31+
private final int[] expectedStatusCodes = new int[]{200};
2732

2833
@Override
2934
public StageObjectsJobSpectraS3Response parseXmlResponse(final WebResponse response) throws IOException {
3035
final int statusCode = response.getStatusCode();
3136
if (ResponseParserUtils.validateStatusCode(statusCode, expectedStatusCodes)) {
3237
switch (statusCode) {
38+
case 200:
39+
if (ResponseParserUtils.getSizeFromHeaders(response.getHeaders()) == 0) {
40+
return new StageObjectsJobSpectraS3Response(null, this.getChecksum(), this.getChecksumType());
41+
}
42+
try (final InputStream inputStream = response.getResponseStream()) {
43+
final MasterObjectList result = XmlOutput.fromXml(inputStream, MasterObjectList.class);
44+
return new StageObjectsJobSpectraS3Response(result, this.getChecksum(), this.getChecksumType());
45+
}
3346
default:
3447
assert false: "validateStatusCode should have made it impossible to reach this line";
3548
}

ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,15 @@
1616
// This code is auto-generated, do not modify
1717
package com.spectralogic.ds3client.commands.spectrads3;
1818

19-
import com.spectralogic.ds3client.networking.HttpVerb;
20-
import com.spectralogic.ds3client.commands.interfaces.AbstractRequest;
21-
import com.google.common.net.UrlEscapers;
19+
import com.spectralogic.ds3client.BulkCommand;
20+
import com.spectralogic.ds3client.commands.interfaces.BulkRequest;
2221
import com.spectralogic.ds3client.models.Priority;
22+
import com.spectralogic.ds3client.models.bulk.Ds3Object;
23+
import com.spectralogic.ds3client.networking.HttpVerb;
2324

24-
public class StageObjectsJobSpectraS3Request extends AbstractRequest {
25+
public class StageObjectsJobSpectraS3Request extends BulkRequest {
2526

2627
// Variables
27-
28-
private final String bucketName;
2928

3029
private String name;
3130

@@ -34,8 +33,8 @@ public class StageObjectsJobSpectraS3Request extends AbstractRequest {
3433
// Constructor
3534

3635

37-
public StageObjectsJobSpectraS3Request(final String bucketName) {
38-
this.bucketName = bucketName;
36+
public StageObjectsJobSpectraS3Request(final String bucketName, final Iterable<Ds3Object> objects) {
37+
super(bucketName, objects);
3938

4039
this.getQueryParams().put("operation", "start_bulk_stage");
4140

@@ -62,12 +61,8 @@ public HttpVerb getVerb() {
6261
}
6362

6463
@Override
65-
public String getPath() {
66-
return "/_rest_/bucket/" + this.bucketName;
67-
}
68-
69-
public String getBucketName() {
70-
return this.bucketName;
64+
public BulkCommand getCommand() {
65+
return BulkCommand.GET;
7166
}
7267

7368

ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
// This code is auto-generated, do not modify
1717
package com.spectralogic.ds3client.commands.spectrads3;
1818

19+
import com.spectralogic.ds3client.commands.interfaces.BulkResponse;
1920
import com.spectralogic.ds3client.models.ChecksumType;
2021
import com.spectralogic.ds3client.commands.interfaces.AbstractResponse;
22+
import com.spectralogic.ds3client.models.MasterObjectList;
2123

22-
public class StageObjectsJobSpectraS3Response extends AbstractResponse {
24+
public class StageObjectsJobSpectraS3Response extends BulkResponse {
2325

24-
public StageObjectsJobSpectraS3Response(final String checksum, final ChecksumType.Type checksumType) {
25-
super(checksum, checksumType);
26+
public StageObjectsJobSpectraS3Response(final MasterObjectList masterObjectListResult, final String checksum, final ChecksumType.Type checksumType) {
27+
super(masterObjectListResult, checksum, checksumType);
2628
}
2729

2830
}

0 commit comments

Comments
 (0)