mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Add file name to DirectAccessUrl (#2081)
* Add file name to DirectAccessUrl This will cause it to be returned in the response * Only set file name if direct url is enabled * Fix bad mock and protect null pointer * Update data-model/src/main/java/org/alfresco/service/cmr/repository/DirectAccessUrl.java null safe comparison Co-authored-by: Piotr Żurek <Piotr.Zurek@hyland.com> --------- Co-authored-by: Piotr Żurek <Piotr.Zurek@hyland.com>
This commit is contained in:
@@ -39,6 +39,7 @@ public class DirectAccessUrl implements Serializable
|
|||||||
private String contentUrl;
|
private String contentUrl;
|
||||||
private Date expiryTime;
|
private Date expiryTime;
|
||||||
private boolean attachment;
|
private boolean attachment;
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
public String getContentUrl()
|
public String getContentUrl()
|
||||||
{
|
{
|
||||||
@@ -70,18 +71,28 @@ public class DirectAccessUrl implements Serializable
|
|||||||
this.attachment = attachment;
|
this.attachment = attachment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFileName()
|
||||||
|
{
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileName(String fileName)
|
||||||
|
{
|
||||||
|
this.fileName = fileName;
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean equals(Object obj)
|
@Override public boolean equals(Object obj)
|
||||||
{
|
{
|
||||||
if (this == obj) return true;
|
if (this == obj) return true;
|
||||||
if (obj == null || getClass() != obj.getClass()) return false;
|
if (obj == null || getClass() != obj.getClass()) return false;
|
||||||
|
|
||||||
DirectAccessUrl that = (DirectAccessUrl) obj;
|
DirectAccessUrl that = (DirectAccessUrl) obj;
|
||||||
return attachment == that.attachment && Objects.equals(contentUrl,
|
return Objects.equals(fileName, that.fileName) && attachment == that.attachment && Objects.equals(contentUrl,
|
||||||
that.contentUrl) && Objects.equals(expiryTime, that.expiryTime);
|
that.contentUrl) && Objects.equals(expiryTime, that.expiryTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public int hashCode()
|
@Override public int hashCode()
|
||||||
{
|
{
|
||||||
return Objects.hash(contentUrl, expiryTime, attachment);
|
return Objects.hash(contentUrl, expiryTime, attachment, fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -655,6 +655,9 @@ public class ContentServiceImpl implements ContentService, ApplicationContextAwa
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
directAccessUrl = store.requestContentDirectUrl(contentUrl, attachment, fileName, contentMimetype, validFor);
|
directAccessUrl = store.requestContentDirectUrl(contentUrl, attachment, fileName, contentMimetype, validFor);
|
||||||
|
if (directAccessUrl != null) {
|
||||||
|
directAccessUrl.setFileName(fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (UnsupportedOperationException ex)
|
catch (UnsupportedOperationException ex)
|
||||||
{
|
{
|
||||||
|
@@ -166,34 +166,46 @@ public class ContentServiceImplUnitTest
|
|||||||
@Test
|
@Test
|
||||||
public void testRequestContentDirectUrl_StoreRequestContentDirectUrlIsCalledWithFileNameOverride()
|
public void testRequestContentDirectUrl_StoreRequestContentDirectUrlIsCalledWithFileNameOverride()
|
||||||
{
|
{
|
||||||
|
DirectAccessUrl mockDirectAccessUrl = new DirectAccessUrl();
|
||||||
|
mockDirectAccessUrl.setAttachment(true);
|
||||||
|
mockDirectAccessUrl.setContentUrl(SOME_CONTENT_URL);
|
||||||
final String fileNameOverride = "fileNameOverride.txt";
|
final String fileNameOverride = "fileNameOverride.txt";
|
||||||
setupSystemWideDirectAccessConfig(ENABLED);
|
setupSystemWideDirectAccessConfig(ENABLED);
|
||||||
when(mockContentStore.isContentDirectUrlEnabled()).thenReturn(ENABLED);
|
when(mockContentStore.isContentDirectUrlEnabled()).thenReturn(ENABLED);
|
||||||
|
when(mockContentStore.requestContentDirectUrl(anyString(), eq(true), eq(fileNameOverride), anyString(), anyLong())).thenReturn(mockDirectAccessUrl);
|
||||||
|
|
||||||
DirectAccessUrl directAccessUrl = contentService.requestContentDirectUrl(NODE_REF, PROP_CONTENT_QNAME, true, 20L, fileNameOverride);
|
DirectAccessUrl directAccessUrl = contentService.requestContentDirectUrl(NODE_REF, PROP_CONTENT_QNAME, true, 20L, fileNameOverride);
|
||||||
assertNull(directAccessUrl);
|
assertEquals("fileName was not set properly on the DirectAccessUrl response", fileNameOverride, directAccessUrl.getFileName());
|
||||||
verify(mockContentStore, times(1)).requestContentDirectUrl(anyString(), eq(true), eq(fileNameOverride), anyString(), anyLong());
|
verify(mockContentStore, times(1)).requestContentDirectUrl(anyString(), eq(true), eq(fileNameOverride), anyString(), anyLong());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRequestContentDirectUrl_StoreRequestContentDirectUrlIsCalledWithNodeNamePropertyWhenFileNameOverrideIsNull()
|
public void testRequestContentDirectUrl_StoreRequestContentDirectUrlIsCalledWithNodeNamePropertyWhenFileNameOverrideIsNull()
|
||||||
{
|
{
|
||||||
|
DirectAccessUrl mockDirectAccessUrl = new DirectAccessUrl();
|
||||||
|
mockDirectAccessUrl.setAttachment(true);
|
||||||
|
mockDirectAccessUrl.setContentUrl(SOME_CONTENT_URL);
|
||||||
setupSystemWideDirectAccessConfig(ENABLED);
|
setupSystemWideDirectAccessConfig(ENABLED);
|
||||||
when(mockContentStore.isContentDirectUrlEnabled()).thenReturn(ENABLED);
|
when(mockContentStore.isContentDirectUrlEnabled()).thenReturn(ENABLED);
|
||||||
|
when(mockContentStore.requestContentDirectUrl(anyString(), eq(true), eq(SOME_FILE_NAME), anyString(), anyLong())).thenReturn(mockDirectAccessUrl);
|
||||||
|
|
||||||
DirectAccessUrl directAccessUrl = contentService.requestContentDirectUrl(NODE_REF, PROP_CONTENT_QNAME, true, 20L, null);
|
DirectAccessUrl directAccessUrl = contentService.requestContentDirectUrl(NODE_REF, PROP_CONTENT_QNAME, true, 20L, null);
|
||||||
assertNull(directAccessUrl);
|
assertEquals("fileName was not set properly on the DirectAccessUrl response", SOME_FILE_NAME, directAccessUrl.getFileName());
|
||||||
verify(mockContentStore, times(1)).requestContentDirectUrl(anyString(), eq(true), eq(SOME_FILE_NAME), anyString(), anyLong());
|
verify(mockContentStore, times(1)).requestContentDirectUrl(anyString(), eq(true), eq(SOME_FILE_NAME), anyString(), anyLong());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRequestContentDirectUrl_StoreRequestContentDirectUrlIsCalledWithNodeNamePropertyWhenFileNameOverrideIsEmpty()
|
public void testRequestContentDirectUrl_StoreRequestContentDirectUrlIsCalledWithNodeNamePropertyWhenFileNameOverrideIsEmpty()
|
||||||
{
|
{
|
||||||
|
DirectAccessUrl mockDirectAccessUrl = new DirectAccessUrl();
|
||||||
|
mockDirectAccessUrl.setAttachment(true);
|
||||||
|
mockDirectAccessUrl.setContentUrl(SOME_CONTENT_URL);
|
||||||
setupSystemWideDirectAccessConfig(ENABLED);
|
setupSystemWideDirectAccessConfig(ENABLED);
|
||||||
when(mockContentStore.isContentDirectUrlEnabled()).thenReturn(ENABLED);
|
when(mockContentStore.isContentDirectUrlEnabled()).thenReturn(ENABLED);
|
||||||
|
when(mockContentStore.requestContentDirectUrl(anyString(), eq(true), eq(SOME_FILE_NAME), anyString(), anyLong())).thenReturn(mockDirectAccessUrl);
|
||||||
|
|
||||||
DirectAccessUrl directAccessUrl = contentService.requestContentDirectUrl(NODE_REF, PROP_CONTENT_QNAME, true, 20L, "");
|
DirectAccessUrl directAccessUrl = contentService.requestContentDirectUrl(NODE_REF, PROP_CONTENT_QNAME, true, 20L, "");
|
||||||
assertNull(directAccessUrl);
|
assertEquals("fileName was not set properly on the DirectAccessUrl response", SOME_FILE_NAME, directAccessUrl.getFileName());
|
||||||
verify(mockContentStore, times(1)).requestContentDirectUrl(anyString(), eq(true), eq(SOME_FILE_NAME), anyString(), anyLong());
|
verify(mockContentStore, times(1)).requestContentDirectUrl(anyString(), eq(true), eq(SOME_FILE_NAME), anyString(), anyLong());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user