Skip to content

Commit d581c3f

Browse files
author
Tibor Dumitriu
committed
🆕 Provide a specific document Id when creating a document
1 parent f9899ba commit d581c3f

File tree

3 files changed

+54
-3
lines changed

3 files changed

+54
-3
lines changed

discovery/src/main/java/com/ibm/watson/developer_cloud/discovery/v1/Discovery.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -348,9 +348,19 @@ public ServiceCall<GetDocumentResponse> getDocument(GetDocumentRequest getReques
348348
public ServiceCall<CreateDocumentResponse> createDocument(CreateDocumentRequest createRequest) {
349349
Validator.notEmpty(createRequest.getEnvironmentId(), EnvironmentManager.ID + " cannot be empty");
350350
Validator.notEmpty(createRequest.getCollectionId(), CollectionManager.ID + " cannot be empty");
351-
RequestBuilder builder = RequestBuilder
352-
.post(String
353-
.format(PATH_DOCUMENTS, createRequest.getEnvironmentId(), createRequest.getCollectionId()));
351+
352+
String pathElements;
353+
if (createRequest.getDocumentId() == null) {
354+
pathElements = String.format(PATH_DOCUMENTS, createRequest.getEnvironmentId(),
355+
createRequest.getCollectionId());
356+
} else {
357+
Validator.notEmpty(createRequest.getDocumentId(), DocumentManager.ID + " cannot be empty");
358+
pathElements = String.format(PATH_DOCUMENT, createRequest.getEnvironmentId(),
359+
createRequest.getCollectionId(), createRequest.getDocumentId());
360+
}
361+
362+
RequestBuilder builder = RequestBuilder.post(pathElements);
363+
354364
if (createRequest.getConfigurationId() != null) {
355365
builder.query(CollectionManager.CONFIGURATION_ID, createRequest.getConfigurationId());
356366
}

discovery/src/main/java/com/ibm/watson/developer_cloud/discovery/v1/model/document/CreateDocumentRequest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class CreateDocumentRequest extends GenericModel {
2828
private final String environmentId;
2929
private final String collectionId;
3030
private String configurationId;
31+
private String documentId;
3132
private JsonObject metadata;
3233
private InputStream file;
3334
private String mediaType;
@@ -38,6 +39,7 @@ protected CreateDocumentRequest(Builder builder) {
3839
this.environmentId = builder.environmentId;
3940
this.collectionId = builder.collectionId;
4041
this.configurationId = builder.configurationId;
42+
this.documentId = builder.documentId;
4143
this.metadata = builder.metadata;
4244
this.file = builder.file;
4345
this.mediaType = builder.mediaType;
@@ -52,6 +54,10 @@ public String getCollectionId() {
5254
return collectionId;
5355
}
5456

57+
public String getDocumentId() {
58+
return documentId;
59+
}
60+
5561
public String getConfigurationId() {
5662
return configurationId;
5763
}
@@ -76,6 +82,7 @@ public static class Builder {
7682
private final String environmentId;
7783
private final String collectionId;
7884
private String configurationId;
85+
private String documentId;
7986
private JsonObject metadata;
8087
private InputStream file;
8188
private String mediaType;
@@ -87,6 +94,11 @@ public Builder(String environmentId, String collectionId) {
8794
this.fileName = this.fileName == null || this.fileName.isEmpty() ? "file_name_not_provided" : this.fileName;
8895
}
8996

97+
public Builder documentId(String documentId) {
98+
this.documentId = documentId;
99+
return this;
100+
}
101+
90102
public Builder configurationId(String configurationId) {
91103
this.configurationId = configurationId;
92104
return this;

discovery/src/test/java/com/ibm/watson/developer_cloud/discovery/v1/DiscoveryServiceTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,35 @@ public void createDocumentFromFileIsSuccessful() throws InterruptedException {
559559
}
560560
}
561561

562+
@Test
563+
public void createDocumentFromFileWithGivenIdIsSuccessful() throws InterruptedException {
564+
server.enqueue(jsonResponse(createDocResp));
565+
String myDocumentJson = "{\"field\":\"value\"}";
566+
JsonObject myMetadata = new JsonObject();
567+
myMetadata.add("foo", new JsonPrimitive("bar"));
568+
569+
CreateDocumentRequest.Builder builder = new CreateDocumentRequest.Builder(environmentId, collectionId);
570+
try {
571+
File tempFile = File.createTempFile("CreateDocTest3", ".json");
572+
tempFile.deleteOnExit();
573+
BufferedWriter out = new BufferedWriter(new FileWriter(tempFile));
574+
out.write(myDocumentJson);
575+
out.close();
576+
577+
builder.file(tempFile);
578+
builder.metadata(myMetadata);
579+
builder.documentId(documentId);
580+
CreateDocumentResponse response = discoveryService.createDocument(builder.build()).execute();
581+
RecordedRequest request = server.takeRequest();
582+
583+
assertEquals(DOCS2_PATH, request.getPath());
584+
assertEquals(POST, request.getMethod());
585+
assertEquals(createDocResp, response);
586+
} catch (final IOException e) {
587+
e.printStackTrace();
588+
}
589+
}
590+
562591
@Test
563592
public void updateDocumentIsSuccessful() throws InterruptedException {
564593
server.enqueue(jsonResponse(updateDocResp));

0 commit comments

Comments
 (0)