mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-18 15:33:09 +00:00
Merge pull request #9113 from uniba-ub/fix-9112-bitstream
fix not resolved thumbnail due to filename issues
This commit is contained in:
@@ -403,7 +403,7 @@ public class BitstreamServiceImpl extends DSpaceObjectServiceImpl<Bitstream> imp
|
||||
|
||||
@Override
|
||||
public Bitstream getThumbnail(Context context, Bitstream bitstream) throws SQLException {
|
||||
Pattern pattern = Pattern.compile("^" + bitstream.getName() + ".([^.]+)$");
|
||||
Pattern pattern = getBitstreamNamePattern(bitstream);
|
||||
|
||||
for (Bundle bundle : bitstream.getBundles()) {
|
||||
for (Item item : bundle.getItems()) {
|
||||
@@ -420,6 +420,13 @@ public class BitstreamServiceImpl extends DSpaceObjectServiceImpl<Bitstream> imp
|
||||
return null;
|
||||
}
|
||||
|
||||
protected Pattern getBitstreamNamePattern(Bitstream bitstream) {
|
||||
if (bitstream.getName() != null) {
|
||||
return Pattern.compile("^" + Pattern.quote(bitstream.getName()) + ".([^.]+)$");
|
||||
}
|
||||
return Pattern.compile("^" + bitstream.getName() + ".([^.]+)$");
|
||||
}
|
||||
|
||||
@Override
|
||||
public BitstreamFormat getFormat(Context context, Bitstream bitstream) throws SQLException {
|
||||
if (bitstream.getBitstreamFormat() == null) {
|
||||
|
@@ -1695,6 +1695,53 @@ public class BitstreamRestRepositoryIT extends AbstractControllerIntegrationTest
|
||||
.andExpect(jsonPath("$.type", is("bitstream")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void thumbnailEndpointTestWithSpecialCharactersInFileName() throws Exception {
|
||||
// Given an Item
|
||||
context.turnOffAuthorisationSystem();
|
||||
|
||||
parentCommunity = CommunityBuilder.createCommunity(context)
|
||||
.withName("Parent Community")
|
||||
.build();
|
||||
|
||||
Collection col1 = CollectionBuilder.createCollection(context, parentCommunity)
|
||||
.withName("Collection 1").build();
|
||||
|
||||
Item item = ItemBuilder.createItem(context, col1)
|
||||
.withTitle("Test item -- thumbnail")
|
||||
.withIssueDate("2017-10-17")
|
||||
.withAuthor("Smith, Donald").withAuthor("Doe, John")
|
||||
.build();
|
||||
|
||||
Bundle originalBundle = BundleBuilder.createBundle(context, item)
|
||||
.withName(Constants.DEFAULT_BUNDLE_NAME)
|
||||
.build();
|
||||
Bundle thumbnailBundle = BundleBuilder.createBundle(context, item)
|
||||
.withName("THUMBNAIL")
|
||||
.build();
|
||||
|
||||
InputStream is = IOUtils.toInputStream("dummy", "utf-8");
|
||||
|
||||
// With an ORIGINAL Bitstream & matching THUMBNAIL Bitstream containing special characters in filenames
|
||||
Bitstream bitstream = BitstreamBuilder.createBitstream(context, originalBundle, is)
|
||||
.withName("test (2023) file.pdf")
|
||||
.withMimeType("application/pdf")
|
||||
.build();
|
||||
Bitstream thumbnail = BitstreamBuilder.createBitstream(context, thumbnailBundle, is)
|
||||
.withName("test (2023) file.pdf.jpg")
|
||||
.withMimeType("image/jpeg")
|
||||
.build();
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
String tokenAdmin = getAuthToken(admin.getEmail(), password);
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/core/bitstreams/" + bitstream.getID() + "/thumbnail"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.uuid", Matchers.is(thumbnail.getID().toString())))
|
||||
.andExpect(jsonPath("$.type", is("bitstream")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void thumbnailEndpointMultipleThumbnailsWithPrimaryBitstreamTest() throws Exception {
|
||||
// Given an Item
|
||||
|
Reference in New Issue
Block a user