Skip to content
This repository was archived by the owner on Aug 13, 2020. It is now read-only.

Commit 798f4ca

Browse files
authored
Merge pull request #388 from ksandrasegaramz/release-1.5
CRC-5397 - Call the new Alfresco API to Provide document as PDF
2 parents f527cd5 + a8fa82f commit 798f4ca

File tree

3 files changed

+60
-8
lines changed

3 files changed

+60
-8
lines changed

file/file-alfresco/src/main/java/uk/gov/justice/services/file/alfresco/requester/AlfrescoFileRequester.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ public class AlfrescoFileRequester implements FileRequester {
2828
@GlobalValue(key = "alfrescoWorkspacePath", defaultValue = "/service/api/node/content/workspace/SpacesStore/")
2929
String alfrescoWorkspacePath;
3030

31+
@Inject
32+
@GlobalValue(key = "alfrescoPdfContentWorkspacePath", defaultValue = "/service/api/requestpdf/workspace/SpacesStore/")
33+
String alfrescoPdfContentWorkspacePath;
34+
3135
@Inject
3236
@GlobalValue(key = "alfrescoReadUser")
3337
String alfrescoReadUser;
@@ -48,8 +52,27 @@ public Optional<InputStream> request(final String fileId, final String fileMimeT
4852
}
4953
}
5054

55+
@Override
56+
public Optional<InputStream> requestPdf(final String fileId, final String fileName) {
57+
final String mimeType = "application/pdf";
58+
try {
59+
return ofNullable(restClient.getAsInputStream(alfrescoPdfUriOf(fileId, fileName),
60+
valueOf(mimeType), headersWithUserId(alfrescoReadUser)));
61+
} catch (final NotFoundException nfe) {
62+
return empty();
63+
} catch (final ProcessingException | InternalServerErrorException ex) {
64+
throw new FileOperationException(format("Error fetching %s from Alfresco with fileId = %s",
65+
fileName, fileId), ex);
66+
}
67+
}
68+
5169
private String alfrescoUriOf(final String fileId, final String fileName) {
5270
return format("%s%s/content/%s", alfrescoWorkspacePath, fileId, fileName);
5371
}
5472

73+
private String alfrescoPdfUriOf(final String fileId, final String fileName) {
74+
return format("%s%s/%s", alfrescoPdfContentWorkspacePath, fileId, fileName);
75+
76+
}
77+
5578
}

file/file-alfresco/src/test/java/uk/gov/justice/services/file/alfresco/requester/AlfrescoFileRequesterIT.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
import static java.util.UUID.randomUUID;
1313
import static javax.ws.rs.core.MediaType.TEXT_PLAIN;
1414
import static org.apache.openejb.util.NetworkUtil.getNextAvailablePort;
15+
import static org.hamcrest.MatcherAssert.assertThat;
1516
import static org.hamcrest.core.Is.is;
16-
import static org.junit.Assert.assertEquals;
17-
import static org.junit.Assert.assertFalse;
18-
import static org.junit.Assert.assertThat;
1917
import static org.junit.Assert.assertTrue;
18+
import static org.junit.Assert.assertFalse;
2019
import static org.junit.Assert.fail;
20+
import static org.junit.Assert.assertEquals;
2121
import static uk.gov.justice.services.test.utils.common.reflection.ReflectionUtils.setField;
2222

2323
import uk.gov.justice.services.file.alfresco.common.AlfrescoRestClient;
@@ -42,11 +42,14 @@ public class AlfrescoFileRequesterIT {
4242
private static final String UNUSED_MIME_TYPE = "text/plain";
4343
private static final String UNUSED_FILE_NAME = "file.txt";
4444
private static final String ALFRESCO_WORKSPACE_PATH = "/service/api/node/content/workspace/SpacesStore/";
45+
private static final String ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH = "/service/api/requestpdf/workspace/SpacesStore/";
46+
4547

4648
private static int PORT = getNextAvailablePort();
4749

4850
private static AlfrescoFileRequester fileRequester;
4951

52+
5053
@Rule
5154
public WireMockRule wireMock = new WireMockRule(PORT);
5255

@@ -66,7 +69,6 @@ public void shouldRequestFileFromAlfrescoInAttachmentMode() throws Exception {
6669
.withHeader("cppuid", equalTo("user1234")));
6770
}
6871

69-
7072
@Test
7173
public void shouldReturnResponseFromAlfresco() throws IOException {
7274
final String fileId = randomUUID().toString();
@@ -86,6 +88,24 @@ public void shouldReturnResponseFromAlfresco() throws IOException {
8688

8789
}
8890

91+
@Test
92+
public void shouldReturnPdfContentFromAlfresco() throws IOException {
93+
final String fileId = randomUUID().toString();
94+
final String mimeType = "application/pdf";
95+
final String fileName = "file123.txt";
96+
final String fileContent = "abcd";
97+
98+
stubFor(get(urlMatching(format("/alfresco%s%s/%s", ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH, fileId, fileName)))
99+
.withHeader("cppuid", equalTo("user1234"))
100+
.willReturn(aResponse().withHeader("Content-Type", mimeType).withBody(fileContent)));
101+
102+
final Optional<InputStream> inputStream = fileRequester.requestPdf(fileId, fileName);
103+
assertTrue(inputStream.isPresent());
104+
105+
assertThat(IOUtils.toString(inputStream.get()), is(fileContent));
106+
}
107+
108+
89109
@Test
90110
public void shouldReturnOptionalEmptyFromAlfrescoIfFileIsNotFound() {
91111
final String fileId = randomUUID().toString();
@@ -98,7 +118,6 @@ public void shouldReturnOptionalEmptyFromAlfrescoIfFileIsNotFound() {
98118
assertFalse(fileRequester.request(fileId, mimeType, fileName).isPresent());
99119
}
100120

101-
102121
@Test
103122
public void shouldThrowAnExceptionIfAlfrescoServiceReturnedError() {
104123
final String fileId = randomUUID().toString();
@@ -115,7 +134,6 @@ public void shouldThrowAnExceptionIfAlfrescoServiceReturnedError() {
115134
}
116135
}
117136

118-
119137
@Test
120138
public void shouldThrowAnExceptionIfAlfrescoServiceIsUnavailable() {
121139
final String fileId = randomUUID().toString();
@@ -131,6 +149,7 @@ public void shouldThrowAnExceptionIfAlfrescoServiceIsUnavailable() {
131149
private static AlfrescoFileRequester alfrescoFileRequesterWith(final String basePath) {
132150
AlfrescoFileRequester fileRequester = new AlfrescoFileRequester();
133151
fileRequester.alfrescoWorkspacePath = ALFRESCO_WORKSPACE_PATH;
152+
fileRequester.alfrescoPdfContentWorkspacePath = ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH;
134153
fileRequester.alfrescoReadUser = "user1234";
135154
fileRequester.restClient = new AlfrescoRestClient();
136155
setField(fileRequester.restClient, "alfrescoBaseUri", basePath);

file/file-api/src/main/java/uk/gov/justice/services/file/api/requester/FileRequester.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,22 @@ public interface FileRequester {
1010

1111
/**
1212
* Requests a file from the FileService.
13-
* @param fileId - the unique id of the file.
13+
*
14+
* @param fileId - the unique id of the file.
1415
* @param fileMimeType - mime-type of the file.
15-
* @param fileName - name of the file.
16+
* @param fileName - name of the file.
1617
* @return streamed content of the file.
1718
*/
1819
Optional<InputStream> request(final String fileId, final String fileMimeType, final String fileName);
1920

21+
/**
22+
* Requests for stream the pdf transformation of the file that given by its fileId from the FileService.
23+
*
24+
* @param fileId - the unique id of the file.
25+
* @param fileName - name of the file.
26+
* @return streamed content of the file.
27+
*/
28+
Optional<InputStream> requestPdf(final String fileId, final String fileName);
29+
2030
}
2131

0 commit comments

Comments
 (0)