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

Commit 08c18eb

Browse files
CRC-5397 - Call the new Alfresco API to Provide document as PDF - Review comments incorporated
1 parent eeec33d commit 08c18eb

File tree

3 files changed

+32
-58
lines changed

3 files changed

+32
-58
lines changed

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

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class AlfrescoFileRequester implements FileRequester {
2929
String alfrescoWorkspacePath;
3030

3131
@Inject
32-
@GlobalValue(key = "alfrescoPdfContentWorkspacePath", defaultValue = "/service/api/node/workspace/SpacesStore/")
32+
@GlobalValue(key = "alfrescoPdfContentWorkspacePath", defaultValue = "/service/api/requestpdf/workspace/SpacesStore/")
3333
String alfrescoPdfContentWorkspacePath;
3434

3535
@Inject
@@ -42,7 +42,7 @@ public class AlfrescoFileRequester implements FileRequester {
4242
@Override
4343
public Optional<InputStream> request(final String fileId, final String fileMimeType, final String fileName) {
4444
try {
45-
return ofNullable(restClient.getAsInputStream(alfrescoUriOf(fileId, fileName, false),
45+
return ofNullable(restClient.getAsInputStream(alfrescoUriOf(fileId, fileName),
4646
valueOf(fileMimeType), headersWithUserId(alfrescoReadUser)));
4747
} catch (final NotFoundException nfe) {
4848
return empty();
@@ -53,10 +53,11 @@ public Optional<InputStream> request(final String fileId, final String fileMimeT
5353
}
5454

5555
@Override
56-
public Optional<InputStream> request(final String fileId, final String fileMimeType, final String fileName, final boolean transformPdf) {
56+
public Optional<InputStream> requestPdf(final String fileId, final String fileName) {
57+
final String mimeType = "application/pdf";
5758
try {
58-
return ofNullable(restClient.getAsInputStream(alfrescoUriOf(fileId, fileName, transformPdf),
59-
valueOf(fileMimeType), headersWithUserId(alfrescoReadUser)));
59+
return ofNullable(restClient.getAsInputStream(alfrescoPdfUriOf(fileId, fileName),
60+
valueOf(mimeType), headersWithUserId(alfrescoReadUser)));
6061
} catch (final NotFoundException nfe) {
6162
return empty();
6263
} catch (final ProcessingException | InternalServerErrorException ex) {
@@ -65,11 +66,13 @@ public Optional<InputStream> request(final String fileId, final String fileMimeT
6566
}
6667
}
6768

68-
private String alfrescoUriOf(final String fileId, final String fileName, final boolean transformPdf) {
69-
if(transformPdf) {
70-
return format("%s%s?transformpdf=%s", alfrescoPdfContentWorkspacePath, fileId, transformPdf);
71-
}
69+
private String alfrescoUriOf(final String fileId, final String fileName) {
7270
return format("%s%s/content/%s", alfrescoWorkspacePath, fileId, fileName);
7371
}
7472

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

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

Lines changed: 13 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,14 @@
1010
import static com.github.tomakehurst.wiremock.client.WireMock.verify;
1111
import static java.lang.String.format;
1212
import static java.util.UUID.randomUUID;
13-
14-
import org.hamcrest.CoreMatchers;
15-
import org.jboss.resteasy.specimpl.MultivaluedMapImpl;
16-
17-
import static javax.ws.rs.core.HttpHeaders.CONTENT_TYPE;
1813
import static javax.ws.rs.core.MediaType.TEXT_PLAIN;
19-
import static javax.ws.rs.core.Response.Status.OK;
2014
import static org.apache.openejb.util.NetworkUtil.getNextAvailablePort;
2115
import static org.hamcrest.MatcherAssert.assertThat;
2216
import static org.hamcrest.core.Is.is;
23-
import static org.junit.Assert.*;
17+
import static org.junit.Assert.assertTrue;
18+
import static org.junit.Assert.assertFalse;
19+
import static org.junit.Assert.fail;
20+
import static org.junit.Assert.assertEquals;
2421
import static uk.gov.justice.services.test.utils.common.reflection.ReflectionUtils.setField;
2522

2623
import uk.gov.justice.services.file.alfresco.common.AlfrescoRestClient;
@@ -32,7 +29,6 @@
3229
import java.util.Optional;
3330

3431
import javax.ws.rs.ProcessingException;
35-
import javax.ws.rs.core.Response;
3632
import javax.ws.rs.core.MultivaluedMap;
3733

3834
import com.github.tomakehurst.wiremock.junit.WireMockRule;
@@ -48,7 +44,7 @@ public class AlfrescoFileRequesterIT {
4844
private static final String UNUSED_MIME_TYPE = "text/plain";
4945
private static final String UNUSED_FILE_NAME = "file.txt";
5046
private static final String ALFRESCO_WORKSPACE_PATH = "/service/api/node/content/workspace/SpacesStore/";
51-
private static final String ALFRESCO_WORKSPACE_TRANSFORMATION_PATH = "service/api/node/workspace/SpacesStore/";
47+
private static final String ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH = "/service/api/requestpdf/workspace/SpacesStore/";
5248

5349

5450
private static int PORT = getNextAvailablePort();
@@ -57,7 +53,7 @@ public class AlfrescoFileRequesterIT {
5753

5854
private RestClient restClient;
5955

60-
private MultivaluedMap<String,Object> headers;
56+
private MultivaluedMap<String, Object> headers;
6157

6258
@Rule
6359
public WireMockRule wireMock = new WireMockRule(PORT);
@@ -102,44 +98,18 @@ public void shouldReturnPdfContentFromAlfresco() throws IOException {
10298
final String fileId = randomUUID().toString();
10399
final String mimeType = "application/pdf";
104100
final String fileName = "file123.txt";
101+
final String fileContent = "abcd";
105102

106-
restClient = new RestClient();
107-
108-
headers = new MultivaluedMapImpl<>();
109-
headers.add("cppuid", "user1234");
110-
111-
final Response readMaterialResponseAsPdf = restClient.query(format(basePathWithPort(PORT) + "/%s%s?transformpdf=true", ALFRESCO_WORKSPACE_TRANSFORMATION_PATH, fileId), "*/*", headers);
112-
113-
assertThat(readMaterialResponseAsPdf.getStatus(), is(OK.getStatusCode()));
114-
assertThat(readMaterialResponseAsPdf.getHeaderString(CONTENT_TYPE), CoreMatchers.equalTo("application/pdf;charset=UTF-8"));
103+
stubFor(get(urlMatching(format("/alfresco%s%s/%s", ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH, fileId, fileName)))
104+
.withHeader("cppuid", equalTo("user1234"))
105+
.willReturn(aResponse().withHeader("Content-Type", mimeType).withBody(fileContent)));
115106

116-
final Optional<InputStream> inputStream = fileRequester.request(fileId, mimeType, fileName, true);
107+
final Optional<InputStream> inputStream = fileRequester.requestPdf(fileId, fileName);
117108
assertTrue(inputStream.isPresent());
118109

119-
assertEquals(IOUtils.toString(inputStream.get()).length(), readMaterialResponseAsPdf.readEntity(String.class).length());
110+
assertThat(IOUtils.toString(inputStream.get()), is(fileContent));
120111
}
121112

122-
@Test
123-
public void shouldReturnOriginalContentFromAlfresco() throws IOException {
124-
final String fileId = randomUUID().toString();
125-
final String mimeType = "text/plain";
126-
final String fileName = "file123.txt";
127-
128-
restClient = new RestClient();
129-
130-
headers = new MultivaluedMapImpl<>();
131-
headers.add("cppuid", "user1234");
132-
133-
final Response readMaterialResponseAsPdf = restClient.query(format(basePathWithPort(PORT) + "/%s%s?transformpdf=false", ALFRESCO_WORKSPACE_TRANSFORMATION_PATH, fileId), "*/*", headers);
134-
135-
assertThat(readMaterialResponseAsPdf.getStatus(), is(OK.getStatusCode()));
136-
assertThat(readMaterialResponseAsPdf.getHeaderString(CONTENT_TYPE), CoreMatchers.equalTo("text/plain;charset=UTF-8"));
137-
138-
final Optional<InputStream> inputStream = fileRequester.request(fileId, mimeType, fileName, false);
139-
assertTrue(inputStream.isPresent());
140-
141-
assertEquals(IOUtils.toString(inputStream.get()).length(), readMaterialResponseAsPdf.readEntity(String.class).length());
142-
}
143113

144114
@Test
145115
public void shouldReturnOptionalEmptyFromAlfrescoIfFileIsNotFound() {
@@ -184,7 +154,7 @@ public void shouldThrowAnExceptionIfAlfrescoServiceIsUnavailable() {
184154
private static AlfrescoFileRequester alfrescoFileRequesterWith(final String basePath) {
185155
AlfrescoFileRequester fileRequester = new AlfrescoFileRequester();
186156
fileRequester.alfrescoWorkspacePath = ALFRESCO_WORKSPACE_PATH;
187-
fileRequester.alfrescoPdfContentWorkspacePath = "/" + ALFRESCO_WORKSPACE_TRANSFORMATION_PATH;
157+
fileRequester.alfrescoPdfContentWorkspacePath = ALFRESCO_WORKSPACE_PDF_TRANSFORMATION_PATH;
188158
fileRequester.alfrescoReadUser = "user1234";
189159
fileRequester.restClient = new AlfrescoRestClient();
190160
setField(fileRequester.restClient, "alfrescoBaseUri", basePath);

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +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

2021
/**
21-
* Requests a file from the FileService.
22-
* @param fileId - the unique id of the file.
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.
2325
* @param fileName - name of the file.
24-
* @param transformPdf - is pdf transformation of the file needed.
2526
* @return streamed content of the file.
2627
*/
27-
Optional<InputStream> request(final String fileId, final String fileMimeType, final String fileName, final boolean transformPdf);
28+
Optional<InputStream> requestPdf(final String fileId, final String fileName);
2829

2930
}
3031

0 commit comments

Comments
 (0)